【发布时间】:2014-11-13 14:25:04
【问题描述】:
我有一个复合视图模型,其中包含其他视图模型,它引入了嵌套绑定。因此,一个嵌套子模型可能会更改另一个子模型的可观察对象,或者由其父模型拥有的对象。
following JsFiddle 上提供了一个示例
在那里,我正在修改一个可观察对象 (itemContainer),它本身公开了一个可观察数组属性 (items)。我希望能够在每次修改 items 属性或 itemContainer 本身时更改绑定。但是,两者似乎都对 dom 没有任何影响,而实际上绑定按预期发生 - 我正在使用 jQuery 修改跨度以在操作后断言元素的实际计数(请参阅“实际计数”值)。
所以,我创建了another JsFiddle,主要区别在于itemContainer 不再是可观察的属性。这次它几乎像我预期的那样工作。
但是,当我更改 itemContainer 或其 items 属性时,我需要能够自动更新 dom。我该怎么办?
此外,在这两种情况下,viewModel.actions.count 计算成员的绑定都不会重新评估。我将不胜感激任何关于它为什么不选择更改的见解。
【问题讨论】:
-
您将如何更改项目容器?
-
@MatthewJamesDavis,一个可能的情况是在 reset 函数中,我设置了一个全新的对象:
itemContainer({items: ko.observableArray(["item x", "item y"])});我使用的 JsFiddles 是我正在处理的“简化”场景,因此这些示例可能没有直接意义,但上面的 sn-p 是我想要解决的问题。此外,可以只改变 observable 数组——我的意思是我应该同时支持这两个 -
如果对您有帮助,请不要忘记将答案标记为已接受
标签: javascript knockout.js nested