2012-12-09 70 views
3

我有ListView中包含按钮的项目列表。我无法找到一个方法来添加事件侦听器的按钮...将事件监听器添加到ListView中的按钮 - WinJS


这是代码:

JS:

downloadsListView = document.getElementById('downloads').winControl 
downloadsListView.itemDataSource = JobList.dataSource 
downloadsListView.onloadingstatechanged = function() { 
     var _this = this; 
     return WinJS.Utilities.query("button.play_pause_button", document.getElementById('downloads')).forEach(function(element) { 
     console.log(element); 
     return element.onclick = _this._play_pause_download; 
     }); 
    }; 

我可以保证,函数通过控制台输出循环按钮。但点击按钮不会触发任何事情。

我希望有人能帮忙。谢谢:)

回答

2

为什么不只是添加一个事件监听器到ListViewItem,当用户点击/点击元素时触发?这是做这件事的正确方法。

ListView has onItemInvoked。莫尔信息可以是found here

例子,你的情况:

<div id="downloads" data-win-control="WinJS.UI.ListView" 
data-win-options="{oniteminvoked : _play_pause_download}"> 
</div> 
+1

如果您的项目中确实存在特定的交互元素,您还可以向您希望允许交互的元素添加“双赢互动” –

2

我认为多米尼克的评论是你最好的选择。该ListView.itemTemplate property页面上MSDN说...

加入互动元素,项模板的项目模板可以包含其他大多数控制,但它不能包含FlipView或 另一个ListView控件。

通常,当用户与元素交互时,ListView 会捕获该交互并使用它来确定用户 是选择或调用项目还是正在平移项目。对于要接收输入的交互式元素(如控件),您必须将互动式类添加到交互式元素或其父元素之一 。该元素及其子元素接收到 交互并不再触发ListView的事件。

将win-interactive附加到项目模板中的元素时,请确保该元素不会填充整个项目,否则 用户将无法选择或调用该项目。

要将交互式元素添加到您的项目模板,您必须使用 模板函数而不是WinJS.Binding.Template。