【问题标题】:Using Underscore.js template within Knockout.js doesn't allow me to use "if" binding在 Knockout.js 中使用 Underscore.js 模板不允许我使用“if”绑定
【发布时间】:2014-12-16 19:24:21
【问题描述】:

我想使用 unserscore.js 模板来加速我的一些代码。我提到了以下问题。

Using Underscore Template with Knockout using interpolate due to asp.net

这是上面链接中的工作示例,
http://jsfiddle.net/6pStz/433/

但是,一旦我在模板中包含“if”绑定,它会给我一个错误提示“此模板引擎不支持其模板中的 'if' 绑定”。

这里是例子,
http://jsfiddle.net/6pStz/488/

<script type="text/html" id="peopleList">
    {{ _.each(people(), function(person) { }}
        <li>
            <b data-bind="text: person.name"></b> is {{= person.age }} years old
        </li>
   {{ }) }}
    <!-- This if binding is the issue -->
    <!-- ko if : test -->
    <div data-bind="text:testString">test</div>
    <!-- /ko -->
</script>

如果您使用的是 Chrome,请检查控制台,应该有错误。我想我需要调整 underscoreTemplateEngine 的“if”绑定,但我不知道该怎么做。

【问题讨论】:

  • 正如我对 Max Brodin 的回答所评论的那样,我认为两个模板引擎协同工作并不是一种简单的方法。由于我已经大量使用 ko 模板实现,因此我决定在需要的地方使用 underscore.js 手动修改 DOM。

标签: knockout.js


【解决方案1】:

if绑定使用敲除模板引擎,改用下划线模板

{{ if (test) { }}
   <div data-bind="text:testString">test</div>
{{ } }}

fiddle

【讨论】:

  • 我实际上在想两个模板引擎可以以某种方式相处。我已经用 ko 实现了很多模板,但是使用“foreach”有些部分非常慢,所以我只想替换它们 underscore.js。你的答案不是我想要的,但它确实是解决方案,谢谢。
猜你喜欢
  • 1970-01-01
  • 2011-11-06
  • 2012-07-04
  • 2021-07-04
  • 2014-06-08
  • 2013-01-13
  • 1970-01-01
  • 1970-01-01
  • 2017-10-26
相关资源
最近更新 更多