我在做什么与knockout.js这里做错了?

问题描述:

我想动态创建observables,但它不太工作。以下是我有:我在做什么与knockout.js这里做错了?

//这种类型的作品

this.Name = ko.observable(data.Name); 
    this.Age = ko.observable(data.Age); 

//这是我想要的工作

for (var propertyName in data) { 
     this.propertyName = ko.observable(propertyName); 
    } 

这将产生只是属性名称,即“名”的东西, “年龄”,但第一个产生的价值和名称,当我调试像“名称”是“约翰”。

+1

到底是什么回事? – 2013-03-01 13:51:50

+1

http://*.com/questions/85992/how-do-i-enumerate-the-properties-of-a-javascript-object – Martin 2013-03-01 13:56:19

+0

我想第二个行为像第一个工作。 – Rayshawn 2013-03-01 13:56:41

什么:

for (var propertyName in data) { 
    this[propertyName] = ko.observable(data[propertyName]); 
} 

this.propertyName实际上将设置一个名为 “PROPERTYNAME” 属性。通过使用括号,可以使用变量来定义属性。

ko.observable(propertyName);正在定义一个属性名称作为其值的可观察值。

您还可能要检查如果该值是一个数组,所以你可以创建一个可观察到的数组,其中需要:

for (var propertyName in data) { 
    var value = data[propertyName]; 
    if ($.isArray(value)) { // assuming your using jQuery 
     this[propertyName] = ko.observableArray(value); 
    } else { 
     this[propertyName] = ko.observable(value); 
    } 
} 
+0

嗯,我试过类似的,不知道要拿的“。”由此' – Rayshawn 2013-03-01 14:02:56