我確信這非常簡單,但目前對我來說並不明顯。清除WinJS綁定JavaScript數組
我有這樣的(在Home.html中定義)一個WinJS列表視圖:
<div data-win-control="WinJS.UI.ListView" id="listView" style="display: inline"
data-win-options="{
itemDataSource: NotificationData.itemList.dataSource,
itemTemplate: select('#notificationMenuTemplate'),
layout: { type: WinJS.UI.ListLayout }}">
</div>
很容易的。我的itemDataSource是一個JavaScript文件(notificationData.js),定義如下:
(function() {
"use strict";
var dataArray = [
{ title: "Title 1", text: "Some text 1", time: "12 hours ago" },
{ title: "Title 2", text: "Some text 2", time: "17 hours ago" },
{ title: "Title 3", text: "Some text 3", time: "3 hours ago" },
{ title: "Title 4", text: "Some text 4", time: "18 hours ago" }
]
var dataList = new WinJS.Binding.List(dataArray);
var publicMembers =
{
itemList: dataList
};
WinJS.Namespace.define("NotificationData", publicMembers);
})();
也很簡單。在我的listView下面,我有一個按鈕,當按下按鈕時,我希望該按鈕清除所有通知(以清空數組)。我有一個home.js文件處理home.html中的所有內容,我只是不確定如何訪問該數組並將其清空?正如我所說,我確信這很容易,但我不清楚如何實施它。
所以考慮我的佈局是,我有一個notificationData.js綁定到我的listView在home.html,然後我有home.js顯然與home.html交互,我將如何訪問我的home.js中的數據數組文件?我可以只是得到listView元素,並調用listView.itemDataSource.splice(0,itemDataSource.length)...? –
是的,你可以抓住ListView的itemDataSource並直接操作它。但是請注意,分配給該對象的是具有IListDataSource方法的對象,而不是WinJS.Binding.List,因此不會有拼接方法。如果要使Binding.List全局可訪問,請將其單獨添加到可從home.js獲得的命名空間。如果修改List,它也將更新ListView。 –