6

感觉好像我在这里遗漏了一些愚蠢的东西,但是在列表视图上收听点击事件的推荐方法是什么?

目前我有:

WinJS.Utilities.query(".menuHolder").listen("click", linkClickHandler, false);

我的列表视图模板使用类“menuHolder”作为它的项目:

            <div id="menuTemplate"
            data-win-control="WinJS.Binding.Template">
            <div class="menuHolder">
                <!-- menu img -->
                <img src="#" data-win-bind="src : pic; alt : title" />

                <div class="menuText">
                    <!-- menu text -->
                    <h1 data-win-bind="innerText : title"></h1>
                    <!-- menu desc -->
                    <h4 data-win-bind="innerText : description"></h4>
                </div>
            </div>
        </div>

我似乎没有在我的链接处理程序中击中我的断点,或者调用它的函数。有什么想法吗?

编辑:

作为后续问题(请记住项目调用事件),如果我说想要使用 WinJS.Navigator 类在应用程序中移动,是否有人知道在列表视图和 iteminvoked 事件之间传递数据的推荐方法?我猜我需要将其中的一部分eventInfo转换为合适的对象并检索信息,是哪一部分?

4

2 回答 2

6

假设您要“传递”的数据是绑定到被调用项的数据,您可以在传递给 iteminvoked 事件的事件参数中执行此操作。我的一个看起来像这样...

demosLV.oniteminvoked = function(e) {
    e.detail.itemPromise.then(function(item) {
        var location = format("/pages/{0}/{0}.html", item.data.key);
        WinJS.Navigation.navigate(location, item.data);
    });
};

所以 demosLV 就是 ListView。我正在将 oniteminvoked 设置为一个函数。该函数接收“e”作为事件参数。在函数中,我访问 e.detail.itemPromise 并挂起一个 .then 。然后我使用 item.data 访问 .then 中的实际数据。希望这就是你的意思。顺便说一句,格式功能是我的功能之一,以防您想知道为什么它不适合您。

于 2012-09-30T01:36:12.397 回答
4

似乎我是一个香肠,我需要在父列表视图 ID 引用上监听“iteminvoked”事件,而不是子级别。

WinJS.Utilities.query("#menu").listen("iteminvoked", linkClickHandler, false);
于 2012-09-27T21:02:01.233 回答