我有一个问题,当我向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>
非常感谢任何帮助。谢谢
答案 0 :(得分:2)
而不是self.Batch.BatchItems().push(bi);
,您必须致电self.Batch.BatchItems.push(bi);
两者之间的区别:
第一个直接推送到 inside 可观察数组的数组。这样做有效,但淘汰赛却无法说出某些变化......
第二个使用push
内的ko.observableArray
方法。这个push
方法再次推送到内部数组,但它也调用valueHasMutated
。这会触发更新模型和UI所需的依赖项更新。
使用已移除的()