knockout将绑定应用于html绑定中生成的绑定

时间:2014-06-03 17:56:09

标签: javascript knockout.js

我在for循环中生成以下内容(暂时忽略jade模板语法):

ul.nav.nav-tabs(data-bind="foreach: channels", id="galery_tabs")
  li
    a(data-toggle='tab', data-bind="attr: {href: '#tab_section_' + __kb.object.cid},html: name() + ' <i class=\"icon-remove close\" data-binding=\"click: removeChannel\"></i>'")

当我调用.applyBindings时,它将使用内部有绑定的Icon正确呈现我的A元素。

问题:如何进行二次传递应用以确保动态生成的绑定现在也应用于所有Icon元素?

1 个答案:

答案 0 :(得分:1)

您不需要为方案使用html绑定。

您可以将<i>放在<a>内,并且可以使用KO无容器语法在图标前添加name属性:

ul.nav.nav-tabs(data-bind="foreach: channels", id="galery_tabs")
  li
    a(data-toggle='tab', data-bind="attr: {href: '#tab_section_' + __kb.object.cid}")
      // ko text: name 
      // /ko
      i.icon-remove.close(data-binding="click: removeChannel")

生成的HTML将如下所示:

<ul data-bind="foreach: channels" id="galery_tabs" class="nav nav-tabs">
  <li><a data-toggle="tab" data-bind="attr: {href: '#tab_section_' + __kb.object.cid}">
      <!-- ko text: name -->
      <!-- /ko--><i data-binding="click: removeChannel" class="icon-remove close"></i></a></li>
</ul>