2012-12-09 173 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。