Ray*_*awn 1 javascript knockout.js
我正在尝试动态创建observable,但它不是很有效.这是我有的:
//这种类型有效
   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的); 正在定义一个以属性名称作为其值的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);
    }
}