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

How do you update an observableArray item in knockout.js when input field is updated

本文关键字:更新 js knockout observableArray 字段 输入      更新时间:2023-09-26

我对使用knockout非常陌生,感觉我正在做的一些事情有点黑客,所以请告诉我,如果我在这里做的是错误的,我应该做一个更好的方式。

我的模型的属性之一是字符串数组。在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手动替换值,或者是否有一些内置的knockout可以为我解决这个问题?

看一下文档,他们很好。

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

你需要做的是将输入连接到一个可观察对象,而不仅仅是一个字符串。

下面是一个例子: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());