【问题标题】:How do you update an observableArray item in knockout.js when input field is updated更新输入字段时如何更新 knockout.js 中的 observableArray 项
【发布时间】:2014-08-04 09:20:47
【问题描述】:

我对使用淘汰赛非常陌生,并且觉得我正在做的一些事情有点 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 手动替换这些值,或者是否有内置的敲除功能可以为我解决这个问题?

【问题讨论】:

    标签: javascript mvvm knockout.js


    【解决方案1】:

    看看他们非常好的文档。

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

    【讨论】:

    • 这对我有用。我不只是将字符串推入 ovservableArray,而是推入 {val: ko.observable(value)}。现在我可以看到所做的更改。谢谢!
    • @bsayegh 是的,这只是我懒惰到我如何将数据放入数组中。很高兴它对你有用。
    猜你喜欢
    • 2013-11-23
    • 1970-01-01
    • 2013-07-25
    • 2013-07-14
    • 2012-08-26
    • 2020-04-07
    • 2022-12-15
    • 2012-04-03
    • 2015-05-29
    相关资源
    最近更新 更多