javascript - 我在这里用 knockout.js 做错了什么?

标签 javascript knockout.js

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

//这种类型有效

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

最佳答案

关于:

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

关于javascript - 我在这里用 knockout.js 做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15159353/

相关文章:

javascript - knockout.js 库中 exportProperty 函数的用途是什么?

javascript - 是否可以向 eval(data); 添加回调?

javascript - knockout : observableArray of arrays of observable inputs

asp.net-mvc - Internet Explorer 中的 knockout 验证错误?

javascript - 在 Firefox 中检测到 "image corrupt or truncated"

javascript - jQuery:确定从哪个 <tr> 调用该函数

javascript - 带有 jquery 事件的 knockout 列表

javascript - 随机移动图像不会移动

javascript - JQuery 弹跳是不是跳错了地方?

javascript - 基于滚动位置的导航填充过渡