jquery ui手风琴在Knockout上失去绑定可见的变化

时间:2012-03-22 19:36:45

标签: javascript jquery jquery-ui knockout.js

我有一个包含子视图模型的knockout viewmodel。在导航栏上进行选择时,正文将更改为选中的子项。

当父虚拟机初始化时(在ko绑定之后),它在子虚拟机上调用init,后者又创建适当的jqueryui绑定。

问题是当父级在所选导航选择之间切换时,隐藏不同VM子级的div。当你切换回它们时,jqueryui绑定就消失了。

任何人都知道这里发生了什么?我认为Knockoutjs的可见属性只是翻转了父容器的css visible attr。为什么jqueryui会失去它的绑定?

http://jsfiddle.net/Gehh9/

2 个答案:

答案 0 :(得分:0)

这是因为绑定。

with 绑定(以及 foreach )控制下方元素的数据绑定上下文。您的可见绑定会更改元素的可见性,这很好,但由于它与 绑定捆绑在一起,因此元素会重新呈现。

这个可能是Knockout中的一个错误,因为你真的不希望首先从DOM中删除这些元素。您可能想在Knockout邮件列表中报告此内容。

这是an updated fiddle跳过带绑定的,您会注意到它正常工作,即使可见绑定仍然存在。

答案 1 :(得分:0)

我创建了一个简单的绑定,你可以使用而不是 with。以下是使用withlight绑定的示例:

http://jsfiddle.net/mbest/Gehh9/5/