正在清除WinJS绑定JavaScript数组
Clearing WinJS binding JavaScript array
我相信这非常简单,但目前我还不清楚。
我有一个WinJS列表视图(在home.html中定义):
<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中的所有内容,我只是不确定如何访问该数组并清空它?正如我所说,我确信这很容易,但我不清楚如何实现它。
首先要了解的是WinJS.Binding.List与创建它的数组之间的关系。构造时,List会创建自己的映射数组,其中包含对数组项的引用。因此,如果更改数组中项目的属性,它们在列表中也会更改。但是,如果清除dataArray(例如使用pop),List仍将保留对原始对象的引用,并且不会自行清除。
改变这种关系的一种方法是在WinJS.Binding.List上使用{proxy:true}选项,这意味着List将底层数组用于自己的存储。然后,如果清除数组或列表,则清除另一个。
如果没有proxy选项,请将数组视为List的初始值设定项,然后使用List的方法来管理其内容。在您的情况下,这是最有意义的,因为dataArray变量在其他任何地方都不可访问,也不能通过List访问。
无论如何,清除Binding.List最简单的方法是使用它的splice方法剪切掉它的所有项,即调用List.splice(0,List.length),或者您可以设置List.length=1(它只拼接掉一个项,因为不支持将长度设置为零),然后调用List.pop()获取最后一个项。
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 将Javascript数组发送到控制器ASP.NET MVC
- JavaScript数组包含一个值
- 将JavaScript数组传递给函数
- javascript:数组循环
- 将数据存储在javascript数组中以供进一步使用
- 在Javascript数组中查找绝对最大值
- JavaScript数组优化以提高性能
- 在javascript数组中分散数字
- 如何发送分配列表<字符串>到JavaScript数组或可枚举对象
- Javascript数组动态
- javascript数组元素是否知道其封闭数组
- 将 JSON 数组解析为 JavaScript 数组
- 将Transform和Instance Variable转换为对象的JavaScript数组
- 使用Web Html表单创建Javascript数组
- 从重复的javascript数组结果集中只获取一行
- 如何为Javascript数组()的使用准备PHP变量
- Javascript数组和函数
- 为DataTables aoColumnDefs创建JavaScript数组(JSON格式)