Knockout JS-如何正确绑定observableArray

Knockout JS - How to correctly bind an observableArray

本文关键字:绑定 observableArray 何正确 JS- Knockout      更新时间:2023-09-26

请看一下这个例子。http://jsfiddle.net/LdeWK/2/

我想知道如何绑定可观察数组的值。我知道上面例子中的问题,是这条线

<p>Editing Fruit: <input data-bind="value: $data" /></p>

$data是实际值,而不是通常绑定的可观察函数。这似乎应该是一个非常直接的过程,但我无法理解。

在其他情况下,我使用了可观察阵列,并将可观察对象作为可观察阵列的每个元素。我想知道如何让它只与可观测阵列一起工作。

感谢

如果将读/写绑定到数组或observableArray中的项,则它们需要是对象的属性。否则,$data将是展开的可观测值,KO无法写入实际可观测值。

你必须做一些类似的事情:

var ViewModel = function(myFruit) {
    var observableFruit = ko.utils.arrayMap(myFruit, function(fruit) {
        return { name: ko.observable(fruit) }; 
    });
    this.fruit = ko.observableArray(observableFruit);
};

ko.applyBindings(new ViewModel( ["Apple", "banana", "orange"] )); 

以下是一个示例:http://jsfiddle.net/rniemeyer/LdeWK/3/

单个水果不一定需要是可观察的,除非您需要UI对值的变化做出反应(您的示例确实需要做出反应,因为您显示的是水果的只读列表)。

这是我的破解方法:

<!-- ko foreach: list().map(observable => ({ value: observable })) -->
    <input type="text" data-bind="value: value">
<!-- /ko -->