我正在尝试动态创建observable,但它不太合适。这就是我所拥有的:
//此类型有效
this.Name = ko.observable(data.Name);
this.Age = ko.observable(data.Age);
//这就是我想要的工作
for (var propertyName in data) {
this.propertyName = ko.observable(propertyName);
}
这只产生属性名称,即“Name”和“Age”,但是当我调试时,第一个产生值和名称,如“Name”是“John”。
答案 0 :(得分:5)
怎么样:
for (var propertyName in data) {
this[propertyName] = ko.observable(data[propertyName]);
}
this.propertyName 实际上会设置名为“propertyName”的属性。通过使用括号,您可以使用变量来定义属性。
ko.observable(propertyName); 定义了一个以属性名称作为其值的observable。
您可能还想检查该值是否为数组,以便您可以根据需要创建可观察数组:
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);
}
}