Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript WinJS数据绑定到属性get/set_Javascript_Windows 8_Winjs - Fatal编程技术网

Javascript WinJS数据绑定到属性get/set

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; } }); }

在WinJS中,我可以在listView中绑定属性getter吗?假设我有一个定义如下的对象:

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的一个关键字。