3

我在 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;
      });
    };

我可以确保该功能确实通过控制台输出循环遍历按钮。但是点击按钮什么也不会触发。

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

4

2 回答 2

3

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

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

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

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

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

于 2012-12-12T16:32:09.673 回答
2

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

ListView 有 onItemInvoked。更多信息可以在这里找到

你的例子:

 <div id="downloads" data-win-control="WinJS.UI.ListView" 
data-win-options="{oniteminvoked : _play_pause_download}">
</div>
于 2012-12-09T14:54:22.880 回答