更新输入字段时,如何更新knockout.js中的observableArray项

时间:2014-06-13 18:25:45

标签: javascript mvvm knockout.js

我很擅长使用淘汰赛,觉得我正在做的一些事情有点像hacky,所以让我知道我在这里做的事情是错的,我应该做得更好。

我的模型的一个属性是字符串数组。在UI中,我正在为数组中的每个项创建一个输入字段。

我想要的是在更新输入字段的值时更新模型中的项目。

假设我有一个名为CarRentalCodes的属性,它是一个observableArray,这是我视图的一部分

     <div data-bind="foreach: CarRentalCodes()">
         <input type="text" style="width:40px; display:inline" class="form-control" data-bind="value: $data"/>
     </div>

它列出了具有正确值的输入字段,但是当我更改它们时,它们不会在模型中更新。

我是否需要使用javascript手动替换值,或者是否有可以解决此问题的内置内容?

1 个答案:

答案 0 :(得分:1)

看看他们非常好的文档。

http://knockoutjs.com/documentation/observableArrays.html#key-point-an-observablearray-tracks-which-objects-are-in-the-array-not-the-state-of-those-objects

您需要做的是将输入连接到一个observable而不仅仅是一个字符串。

以下是一个示例:http://jsfiddle.net/edhedges/ssekY/,因为它必须附带代码:

function vm() {
    this.myArr = ko.observableArray([
        new myObj('1'),
        new myObj(''),
        new myObj('hello'),
        new myObj('there')
    ]);
}

function myObj(myObjs) {
    this.myObs = ko.observable(myObjs);
}

ko.applyBindings(new vm());