将事件侦听器添加到ListView - WinJS中的按钮

时间:2012-12-09 06:56:18

标签: javascript html windows-8 winjs

我有一个ListView中包含按钮的项目列表。我找不到向按钮添加事件监听器的方法......


这是代码:

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 个答案:

答案 0 :(得分:3)

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

  

向项目模板添加交互式元素项目模板可以包含大多数其他控件,但不能包含FlipView或   另一个ListView。

     

通常,当用户与元素交互时,ListView   捕获该交互并使用它来确定用户是否   选择或调用某个项目或正在平移项目。为   交互式元素,如控件,接收输入,你必须   将win-interactive类附加到交互元素或其中一个   它的父元素。那个元素及其子女得到了   交互并且不再触发ListView的事件。

     

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

     

要向项目模板添加互动元素,您必须使用   模板化函数而不是WinJS.Binding.Template。

答案 1 :(得分:2)

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

ListView有onItemInvoked。有关的信息可以是found here

案例中的例子:

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