将绑定应用到HTML绑定中生成的绑定中

knockout apply binding to generated binding inside html binding

本文关键字:绑定 HTML 应用      更新时间:2023-09-26

我在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时,它会正确渲染我的A元素,里面有一个绑定图标。

问题:我如何使第二遍应用以确保动态生成的绑定现在也应用于所有Icon元素?

您不需要在这个场景中使用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>