感觉我在这里错过了一些愚蠢的东西,但是在listview上听点击事件的推荐方法是什么?
目前我已经:
WinJS.Utilities.query(".menuHolder").listen("click", linkClickHandler, false);
我的listview模板使用类'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>
我似乎没有点击我的断点,在我的链接处理程序中,或者调用它的函数。有什么想法吗?
修改
作为后续问题(记住项目调用事件)是任何人都知道推荐的方法在listview和iteminvoked事件之间传递数据,如果我说想要使用WinJS.Navigator类来移动应用?我猜我需要将eventInfo
的某些部分投射到合适的对象中并检索信息,这是什么部分?
答案 0 :(得分: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”作为事件args。在函数中,我访问e.detail.itemPromise并挂起它。然后关闭它。然后我使用item.data访问.then中的实际数据。 希望这就是你的意思。顺便说一句,格式函数是我的一个,以防你想知道它为什么不适合你。
答案 1 :(得分:4)
似乎我是一个香肠,我需要在父列表视图ID引用上监听'iteminvoked'事件,而不是子级别。
WinJS.Utilities.query("#menu").listen("iteminvoked", linkClickHandler, false);