【问题标题】:What am I doing wrong here with knockout.js?我在这里用 knockout.js 做错了什么?
【发布时间】:2013-03-01 22:06:46
【问题描述】:

我正在尝试动态创建可观察对象,但效果不佳。这是我所拥有的:

//这种类型有效

   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”。

【问题讨论】:

标签: javascript knockout.js


【解决方案1】:

怎么样:

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

【讨论】:

  • 啊,我试过那个类似的,不知道取的“。”来自“这个”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-03
  • 2013-06-28
  • 2023-01-19
  • 1970-01-01
  • 1970-01-01
  • 2020-12-23
  • 1970-01-01
相关资源
最近更新 更多