使用Knockout Observable Array

时间:2013-08-06 23:29:27

标签: json knockout.js

我正在研究一个MVC项目,我在客户端使用knockout来操纵数据。当我从服务器接收数据时,我只需将其传递给observableArray,如下所示。数据在服务器端转换为JSON。我收到的数据是JSon。

现在我的问题是淘汰,因为当我将数据绑定到文本框时,我想在标签中看到文本框编辑的值如下所示

<p>First name: <strong data-bind="text: name()[0].firstName "></strong></p>
<p>Last name: <strong data-bind="text: name()[0].lastName"></strong></p>
<input data-bind="value: name()[0].firstName" />
<input data-bind="value: name()[0].lastName" />


var self = this;

        self.users= ko.observableArray(@Html.Raw(Model.UserJSON));

我无法在

元素中显示更改的值。但是如果我有一个observableArray,它的值在observable数组中初始化为observable,它就像下面一样工作正常。

function name(name, lname)
{
    this.firstName = ko.observable(name);
    this.lastName = ko.observable(lname);
}


function AppViewModel() {

    this.name = ko.observableArray([new name("samet","caglar")]);
}

// Activates knockout.js
ko.applyBindings(new AppViewModel());

我的问题是我应该获得我收到的所有数据并将每个var定义为observable,然后将它们传递给可观察数组?因为这个解决方案看起来效率不高。也许我错过了什么?

1 个答案:

答案 0 :(得分:0)

如果您想要在模型和屏幕上反映出更改,那么您将需要观察整个对象,包括其所有元素。像PW Kid一样建议看一下kockoutjs映射插件,因为这会减少你需要编写的代码量。