使用JQuery模板进行Knockout绑定是不是显示数据?

时间:2014-06-03 12:37:41

标签: jquery knockout.js knockout-2.0 jquery-templates

我对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模板。请帮助

1 个答案:

答案 0 :(得分:3)

首先:您不应该使用jquery.tmpl支持,因为不再维护该库。原生KO模板引擎足以满足95%的用例。

第二:虽然KO支持开箱即用的jquery.tmpl,但仍然需要引用jquery.tmpl library本身。

来自documentation

  

默认情况下,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