KnockoutJS 2和$ bindings不再工作了

时间:2012-01-04 09:52:08

标签: knockout.js

我已升级到KnockoutJs 2,发现使用模板绑定的网页已停止运行。

我有一个使用${ x }绑定的模板绑定,但这些绑定尚未解析。

我删除了模板并使用了新的控制流绑定,但它仍然无效。我不得不转而使用data-bind。

我真的不想将所有东西都转换过来,我希望它能与jquery模板向后兼容,并且让我可以使用新的控制流绑定。

知道如何让这个工作吗?

2 个答案:

答案 0 :(得分:2)

如果您使用的是jQuery模板,Knockout 2.0需要它的特定版本。请参阅Knockout页面中的注释:http://blog.stevensanderson.com/2011/08/31/knockout-1-3-0-beta-available/

史蒂夫桑德森提到......

  

如“向后兼容性说明”中所述,如果您正在使用   jQuery模板,您需要将其更新为1.0.0pre,如下所示   https://github.com/jquery/jquery-tmpl

  • 请注意,KO 1.3beta最终被发布为KO 2.0.0

如果您不打算使用jQuery模板,请发布您的代码的jsFiddle,我们可以帮助您解决它。

[UPDATE] 在进一步的评论中,您询问了如何进行模板。以下是从Knockouts网站http://knockoutjs.com/documentation/template-binding.html上的示例中采用的两种可能性,它们使用KO 2.0.0的本机模板

<h2>Participants</h2>
Here are the participants:
<div data-bind="template: { name: 'person-template', foreach: people }"></div>

<script type="text/html" id="person-template">
    <h3 data-bind="text: name"></h3>
    <p>Credits: <span data-bind="text: credits"></span></p>
</script>

 function MyViewModel() {
     this.people = [
         { name: 'Franklin', credits: 250 },
         { name: 'Mario', credits: 5800 }
     ]
 }
 ko.applyBindings(new MyViewModel());

这与在您使用foreach的元素中直接嵌入匿名模板的结果相同,即:

<div data-bind="foreach: people">
    <h3 data-bind="text: name"></h3>
    <p>Credits: <span data-bind="text: credits"></span></p>  
</div>

答案 1 :(得分:1)

不要使用jquery.tmpl。这是一个不会进一步发展的死水项目。 “$ {x}”的东西是jquery.tmpl

Knockout 2.0现在使用它自己的原生模板库。用那个。它不向后兼容“$ {x}”,但这就是为什么Knockout改为主要版本升级(1.2到2.0) - 有一些重大变化。