我已升级到KnockoutJs 2
,发现使用模板绑定的网页已停止运行。
我有一个使用${ x }
绑定的模板绑定,但这些绑定尚未解析。
我删除了模板并使用了新的控制流绑定,但它仍然无效。我不得不转而使用data-bind。
我真的不想将所有东西都转换过来,我希望它能与jquery
模板向后兼容,并且让我可以使用新的控制流绑定。
知道如何让这个工作吗?
答案 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
如果您不打算使用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) - 有一些重大变化。