knockoutjs可观察对象的可观察对象数组

时间:2017-06-22 08:13:32

标签: javascript knockout.js observable

我有一个问题,当我向observablearray添加一个包含observable属性的对象时,接口没有被更新。

我在这个论坛上研究了类似的问题(KnockoutJS - Observable Array of Observable objects),但我仍然无法正确理解语法,所以经过一天的尝试后,我转向期待求助。

我创造了一个我想要实现的目标

https://jsfiddle.net/ryrpnbr9/23/

当您按下“添加”按钮时,将创建一个BatchItem对象,并将其添加到Batch的BatchItems observablearray中。我可以看到对象正在更新。

我有一个包含以下绑定定义的表

<tbody data-bind="foreach: Batch.BatchItems()">
    <tr>
        <td><span data-bind="text: DocumentType"></span></td>
        <td><span data-bind="text: ItemType"></span></td>                            
    </tr>
</tbody>

非常感谢任何帮助。谢谢

1 个答案:

答案 0 :(得分:2)

而不是self.Batch.BatchItems().push(bi);,您必须致电self.Batch.BatchItems.push(bi);

两者之间的区别:

第一个直接推送到 inside 可观察数组的数组。这样做有效,但淘汰赛却无法说出某些变化......

第二个使用push内的ko.observableArray方法。这个push方法再次推送到内部数组,但它也调用valueHasMutated。这会触发更新模型和UI所需的依赖项更新。

使用已移除的()

更新了Man-Page of cat