我有一个包含子视图模型的knockout viewmodel。在导航栏上进行选择时,正文将更改为选中的子项。
当父虚拟机初始化时(在ko绑定之后),它在子虚拟机上调用init,后者又创建适当的jqueryui绑定。
问题是当父级在所选导航选择之间切换时,隐藏不同VM子级的div。当你切换回它们时,jqueryui绑定就消失了。
任何人都知道这里发生了什么?我认为Knockoutjs的可见属性只是翻转了父容器的css visible attr。为什么jqueryui会失去它的绑定?
答案 0 :(得分:0)
这是因为带绑定。
with 绑定(以及 foreach )控制下方元素的数据绑定上下文。您的可见绑定会更改元素的可见性,这很好,但由于它与 绑定捆绑在一起,因此元素会重新呈现。
这个可能是Knockout中的一个错误,因为你真的不希望首先从DOM中删除这些元素。您可能想在Knockout邮件列表中报告此内容。
这是an updated fiddle跳过带绑定的,您会注意到它正常工作,即使可见绑定仍然存在。
答案 1 :(得分:0)
我创建了一个简单的绑定,你可以使用而不是
with
。以下是使用withlight
绑定的示例: