情况如下:
我在ObservableArray中获取了菜单项(和子菜单项)(以及子ObservableArray中的子项)。我在ObservableArray中动态添加子元素,现在我试图根据子元素动态显示div。如下所示,ChildObservableArray
还包含destUrl
,我试图在BananaID
上选择基本菜单项(基本上与当前索引相同,但是索引似乎也没有工作但是它给出了错误
"Uncaught Error: Unable to parse bindings.
Message: TypeError: Cannot read property 'ChildObservableArray' of undefined;".
<section data-bind="foreach: viewModel.Bananas">
<div data-bind="attr: { 'id': viewModel.ObservableArray()[0].ChildObservableArray()[BananaID].destUrl }">
</div>
</section>
如果我用任意数字替换BananaID
(但仅限1个菜单项),它确实有效,我认为它在BananaID
而不是当前{{}中寻找ChildObservableArray
1}}。
编辑: 这是小提琴:http://jsfiddle.net/Dennis50/PhxSe/1/
答案 0 :(得分:3)
基于你的小提琴,(在撰写本文时,这包含一些错误)this fiddle做你想要的。
您使用viewmodel
引用绑定中的viewmodel。你不需要那个。 ko.applyBindings(viewModel)
为你做到了。
在foreach
的内部,$root
是对viewmodel的引用。
如果由于这是大型模型结构的一部分而存在这些用法,那么您需要相应地修改访问者。
如果BananaID()
没有解决您的问题(+1到GôTô),则会发生其他事情。除了清理模型引用,添加一些新的可视化元素,以及修复javascript声明之外,这几乎就是我从原始小提琴中修改的内容。
答案 1 :(得分:1)
如果BananaID是可观察的,请尝试使用BananaID
()