我在做什么与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);
}
这将产生只是属性名称,即“名”的东西, “年龄”,但第一个产生的价值和名称,当我调试像“名称”是“约翰”。
答
什么:
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
到底是什么回事? – 2013-03-01 13:51:50
http://*.com/questions/85992/how-do-i-enumerate-the-properties-of-a-javascript-object – Martin 2013-03-01 13:56:19
我想第二个行为像第一个工作。 – Rayshawn 2013-03-01 13:56:41