【问题标题】:knockout apply binding to generated binding inside html binding敲除将绑定应用到 html 绑定中生成的绑定
【发布时间】:2014-06-04 04:31:22
【问题描述】:

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

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。

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

【问题讨论】:

  • 伙计,我们不能忽略翡翠模板语法..请输入一个好的HTML代码
  • 你为什么在这里使用html绑定?你为什么不把&lt;i&gt; 放在你的&lt;a&gt;里面?
  • 我正在使用 html 绑定,因为我动态地合并内容“选项卡”的名称加上需要删除选项卡的“x”图标。如果我将图标放在 a 之外,它会破坏标签内容。也许我应该这样解决,哈哈。

标签: javascript knockout.js


【解决方案1】:

您不需要对场景使用html 绑定。

您可以将&lt;i&gt; 放在&lt;a&gt; 中,并且可以使用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>

【讨论】:

  • 哇哦……哥们,你是我的英雄。解决方案就像魅力一样。 \m/。赞!从未考虑过无容器绑定.. 太棒了!
猜你喜欢
  • 2014-06-27
  • 2011-08-13
  • 2013-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-09
相关资源
最近更新 更多