knockoutjs模板无法正常工作

时间:2012-02-14 13:20:52

标签: knockout.js jquery-templates

我正在播放关于淘汰赛的视频,我不知道为什么我的代码无效。

我正在使用这些js脚本:

    <script src="assets/js/knockout-2.0.0.js" type="text/javascript"></script>
    <script src="assets/js/jquery-1.7.1.min.js" type="text/javascript"></script>
    <script src="assets/js/jquery.tmpl.min.js" type="text/javascript"></script>    

<h2>Friends</h2>
    <ul data-bind="template: {name: 'friendsTemplate', foreach:friends}"></ul>

    <script type="text/html" id="friendsTemplate">
        <li>${ data.name }</li>
    </script>

<script type="text/javascript">

    function friend(name) {
        return { name : ko.observable(name) };
    }

    var viewModel = {
        friends : ko.observableArray([new friend('João'), new friend('Lucas')])
    };
    ko.applyBindings(viewModel);
</script>

此代码将此返回给我,它显示的是正确数量的朋友,但没有显示名称。

Friends
${ data.name }
${ data.name }

我做错了什么?

提前致谢。

修改 进行一些测试和这段代码是有效的,因为它没有使用模板,所以我的代码是正确的,问题只有模板。

<script type="text/html" id="friendsTemplate">
    <li><span data-bind="text: name"></span></li>
</script>

2 个答案:

答案 0 :(得分:3)

你应该在knockoutjs之前引用jquery.tmpl

<script src="assets/js/jquery-1.7.1.min.js" type="text/javascript"></script>
<script src="assets/js/jquery.tmpl.min.js" type="text/javascript"></script>
<script src="assets/js/knockout-2.0.0.js" type="text/javascript"></script> 

并将$ {data.name}更改为$ {name}

http://jsfiddle.net/c8Svk/

答案 1 :(得分:0)

尝试:

<script type="text/html" id="friendsTemplate">
    <li>$data.name</li>
</script>

或者,您可以这样做:

<script type="text/html" id="friendsTemplate">
    <li data-bind="text: name"></li>
</script>