淘汰赛JS - 如何正确地结合observableArray淘汰赛JS - 如何正确地结合obs

2019-05-12 08:48发布

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

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

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

$数据是实际值,而不是你通常会绑定观察到的功能。 这似乎是它应该是一个非常简单的过程,但我不能弄明白。

在其他情况下我已经使用可观察的阵列和具有可观察到的对象作为可观察的阵列中的每个元素。 我想知道如何得到这个只观察到阵列工作。

谢谢

Answer 1:

如果绑定读/写在一个数组或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/

个别水果不一定需要是可观察的,除非你需要你的用户界面,以应对不断变化的值(你的样品确实需要作出反应,因为你是显示成果的一个只读列表)。



Answer 2:

这里是我的黑客周围:

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


文章来源: Knockout JS - How to correctly bind an observableArray