我有一个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;
});
};
我可以确保该功能通过控制台输出循环显示按钮。但是点击按钮什么也没发光。
我希望有人可以提供帮助。谢谢:))
答案 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>