Javascript jqDialog内部KnockoutJS如果绑定

Javascript jqDialog内部KnockoutJS如果绑定,javascript,knockout.js,Javascript,Knockout.js,我在if绑定(“选项卡”)中有jqDialogs。在我转到另一个选项卡并返回之后,它会导致初始化jqDialogs并创建一个新实例=>因此我有两个或更多(取决于从一个选项卡跳到另一个选项卡的次数)相同的对话框,而不是一个。 谢谢 您可能需要使用visible绑定。注意if绑定上的: if扮演着与可见绑定类似的角色。区别在于 在可见的情况下,包含的标记始终保留在DOM和 始终应用其数据绑定属性-仅应用可见绑定 使用CSS切换容器元素的可见性。如果有约束力, 但是,实际添加或删除DOM中包含的标记

我在if绑定(“选项卡”)中有jqDialogs。在我转到另一个选项卡并返回之后,它会导致初始化jqDialogs并创建一个新实例=>因此我有两个或更多(取决于从一个选项卡跳到另一个选项卡的次数)相同的对话框,而不是一个。 谢谢


您可能需要使用
visible
绑定。注意
if
绑定上的:

if扮演着与可见绑定类似的角色。区别在于 在可见的情况下,包含的标记始终保留在DOM和 始终应用其数据绑定属性-仅应用可见绑定 使用CSS切换容器元素的可见性。如果有约束力, 但是,实际添加或删除DOM中包含的标记, 并且仅当表达式为true时才将绑定应用于子体


因此,每次都会删除并重新添加您的div,从而导致init绑定被一次又一次地处理。

您是否尝试在div中用
可见的
绑定替换
绑定?我使用if绑定而不是visible来获得一些渲染和初始化性能。上面的代码只是一个选项卡的一小部分(一个对话框)。答案是thnks!是的,我知道。。。但是,除了将对话框存储在if绑定之外,还有其他解决方案吗?也许bindinghandler中有一些处理?为什么不使用可视绑定?我使用if绑定而不是visible来获得一些渲染和初始化性能。上面的代码只是一个选项卡的一小部分(一个对话框)。只有当可见绑定可见时(并在可见绑定时订阅它以执行初始化),您才能将bindinghandler修改为init Thnx!你能举个例子吗?
<!-- ko if: IsTabVisible-->
     <div data-bind="jqDialog:{buttons:[{ text: '@Resources.Resource.Save',
    click: Save},{ text: '@Resources.Resource.Cancel',
    click: UndoChanges}], modal: true, autoOpen: false,
    close: UndoChanges, title: "title"},
    dialogVisible: Isvisible, jqButton:{
    index: 0, disabled: HasError}">
    //some content
    </div>
 <!-- /ko -->