Javascript WinJS数据绑定到属性get/set
在WinJS中,我可以在listView中绑定属性getter吗?假设我有一个定义如下的对象:Javascript WinJS数据绑定到属性get/set,javascript,windows-8,winjs,Javascript,Windows 8,Winjs,在WinJS中,我可以在listView中绑定属性getter吗?假设我有一个定义如下的对象: var MyLib = MyLib || {}; MyLib.ToDoItem = function() { this.name = ''; this.description = ''; Object.defineProperty(this, "completed", { get : function() { return false; } }); }
var MyLib = MyLib || {};
MyLib.ToDoItem = function() {
this.name = '';
this.description = '';
Object.defineProperty(this, "completed", {
get : function() {
return false;
}
});
}
MyLib.ToDoList = [];
//MyLib.ToDoList.push....add todo items
我正在声明一个WinJS.Binding.Template,其中除使用属性getter定义的属性外,所有属性都是绑定的:
<div id="myItemTemplate" data-win-control="WinJS.Binding.Template">
<div class="titleTile">
<h4 class="item-title" data-win-bind="textContent: name"></h4>
<p data-win-bind="textContent: description"></p>
<div data-win-bind="textContent: completed"></div> <-- Renders as undefined
</div>
</div>
你在完成任务后错过了一行
get : function() {
return false;
}
, enumerable: true
通过将enumerable设置为true,可以使数据绑定在此属性上工作。顺便说一句,您应该将函数和属性定义移到构造函数之外,这样做可以获得更好的性能。谢谢,今晚我要试一试!。关于将属性getter/setter移动到prototype,我不确定该如何做,因为我有支持变量(示例中未显示)。e、 我的get是“return\u completed”;将支持变量放在对象(this.something)中,而不是放在构造函数的闭包中。你牺牲了一些理论上的对象隐私,但会在性能上有所提高。@ChrisTavares,这不是违背了目的吗?目前不太关心表现,但会记住这一点。相关说明,加起来这看起来很有趣,enumerable不仅仅是WinJS的一个关键字。