Knockout.js EasyTabs和KnockoutJS冲突

Knockout.js EasyTabs和KnockoutJS冲突,knockout.js,Knockout.js,我正在使用EasyTabs插件()和KnockoutJS。我有一个面板,在没有可用项目时不得显示。所以我写了以下代码: <div data-bind="if: machine() !== null"> 此div包含选项卡容器。当机器可用时。面板是可见的。但是标签不起作用。您可以单击它,浏览器的地址栏会显示所单击标记的名称,但选项卡窗口不会更改 当我删除div中的数据绑定时,它会工作,但不正常,面板是可见的,这不是我想要的 已知问题或是否有解决方法 编辑:问题是,除非对容器元素调

我正在使用EasyTabs插件()和KnockoutJS。我有一个面板,在没有可用项目时不得显示。所以我写了以下代码:

<div data-bind="if: machine() !== null">

此div包含选项卡容器。当机器可用时。面板是可见的。但是标签不起作用。您可以单击它,浏览器的地址栏会显示所单击标记的名称,但选项卡窗口不会更改

当我删除div中的数据绑定时,它会工作,但不正常,面板是可见的,这不是我想要的

已知问题或是否有解决方法


编辑:

问题是,除非对容器元素调用了
EasyTabs()
,否则EasyTabs不会对选项卡执行任何操作。由于只有当绑定成功后,该元素才真正成为DOM的一部分,当绑定失败时,该元素才会从DOM中消失,因此初始化永远不会发生


您需要编写一个自定义绑定,在其
update
方法中调用相应的容器元素上的
easytabs()

根据您的JSFIDLE,我这样修复了它:

<div id="cntrMyTabs" class="tab-container" data-bind="visible: isShow">
   <ul class='etabs'>
      <li class='tab'><a href="#tab1">Tab 1</a></li>
      <li class='tab'><a href="#tab2">Tab 2</a></li>
   </ul>
   <div id="tab1" class="panel-container">
       This is tab 1.
    </div>
    <div id="tab2" class="panel-container">
       This is tab 2.
    </div>
</div>

这是表1。 这是表2。

请注意,外部div已消失,并且添加了可见数据绑定。之所以这样做有效,而您的不起作用,是因为在您的内部html不是DOM的一部分,而且正如其他人所说,当您选中它时,它不会成为easytabs。有了这个,这就是DOM的一部分,只是隐藏了起来。

你能再发一些代码吗?你的标签是如何被剪切的?可能是JSFIDLE中的一个正在工作的复制程序……我添加了一个JSFIDLE示例。您需要一个自定义bindinghandler,正如ebohlman在回答中所描述的那样。所以你需要这样的东西: