小编Nat*_*lia的帖子

ko.computed跟踪数组元素的更改

有没有办法创建一个ko.computed字段,通知发生在数组元素发生的变化?

我的第一个想法是使用observableArray,但它不起作用,因为

observableArray跟踪数组中的对象,而不是这些对象的状态

不过,我发布这段代码来说明我正在尝试做什么.

HTML:

<div data-bind="foreach:arr">
    <input type="text" value="" data-bind="value: a" />
</div>

<div data-bind="foreach:arr">
    <p>
        Field "a" is changed: <span data-bind="text: aChanged()? 'true': 'false'"></span>
    </p>   
</div>
<p>
    Some "a" field from the array is changed: <span data-bind="text: someAChanged()? 'true': 'false'"></span>
</p>
Run Code Online (Sandbox Code Playgroud)

JavaScript的:

function AppViewModel() {
    this.arr = ko.observableArray([new A(), new A()]);
    this.someAChanged = ko.computed(function () {
        var ch = false;
        var arr = this.arr();
        for (var i = 0; i < arr.length; i ++) {
            if (arr[i].aChanged()) { …
Run Code Online (Sandbox Code Playgroud)

knockout.js

7
推荐指数
1
解决办法
5256
查看次数

标签 统计

knockout.js ×1