我对Knockout很新,作为一个学习练习,我试图用JQuery模板进行敲门绑定(如果我指的是错误的术语,我很抱歉)
请参阅此链接:http://jsfiddle.net/Yawer/7xvgJ/1/
这是我的代码:
JS:
var data = [
{ Id: 1, Name: "Jim" },
{ Id: 2, Name: "Bilal" },
{ Id: 3, Name: "Hussain" },
{ Id: 4, Name: "Hassan" }
];
var viewModel = function () {
var self = this;
//data
self.tags = ko.observableArray(data);
self.tagToAdd = ko.observable();
//behaviour
self.addTag = function () {
self.tags.push({ Name: self.tagToAdd() });
};
};
$(function () {
var vm = new viewModel();
ko.applyBindings(vm);
});
HTML:
<div data-bind="template: 'tagsTemp'">
</div>
<script id="tagsTemp" type="text/html">
{{each tags}}
<span>${Name}</span>
{{/each}}
</script>
我期待名单列表,但我得到代码而不是名字:
{{each tags}} ${Name} {{/each}}
请指导我在代码中出错的地方。我理解Knockout绑定可以用不同的方式完成,但我需要使用Jquery模板。请帮助
答案 0 :(得分:3)
首先:您不应该使用jquery.tmpl支持,因为不再维护该库。原生KO模板引擎足以满足95%的用例。
第二:虽然KO支持开箱即用的jquery.tmpl,但仍然需要引用jquery.tmpl library本身。
默认情况下,Knockout支持jquery.tmpl。要使用它, 您需要按以下顺序引用以下库:
<!-- First jQuery --> <script src="jquery-1.7.1.min.js"></script> <!-- Then jQuery.tmpl --> <script src="jquery.tmpl.js"></script> <!-- Then Knockout --> <script src="knockout-x.y.z.js"></script>
以下是添加了缺失参考的JSFiddle。