-1

我想知道为什么li没有附加。

<! DOCTYPE html>
<html>
<head>
    <title>Trying out knockout</title>
    <script type="text/javascript" src="jquery-1.4.4.js"></script>
    <script type="text/javascript" src="jquery.tmpl.js"></script>
    <script type="text/javascript" src="knockout-1.1.2.debug.js"></script>      
    <script type="text/javascript">
        var viewModel ={
            personName:ko.observable('Stan Marsh'),         
            personAge:ko.observable(28),
            grades:[
                    {subject:"Math",grade:'A'},
                    {subject:"Physics",grade:'B'},
                    {subject:"Chemistry",grade:'A'},
                    {subject:"Biology",grade:'A'}
            ]           
        };      


    $(document).ready(function (){      
        // Apply knockout bindings
        ko.applyBindings(viewModel);
        // Apply templates          
        function renderList() {
          $("#tmplGrades").tmpl(viewModel.grades).append("#ulGradeList"); 
        };      
        // Event Wireup
        $('#btnViewChanges').click(function(){
        var message = "New Name:"+viewModel.personName()+" and New Age:"+ viewModel.personAge();
            alert(message);

        });

    });

    </script>
    <script id="tmplGrades" type="text/html">
    {{each viewModel.grades}}<li>Subject: ${subject} , Grade: ${grade}</li>
    </script>   
</head>
<body>
    <fieldset>
        <legend>Person</legend>
        <p>
            <label for="tbPersonName">Name:</label>
            <input type="text" id="tbPersonName" data-bind="value:personName" />
        </p>
        <p>
            <label for="tbAge">Age:</label>
            <input type="text" id="tbAge" data-bind="value:personAge" />
        </p>
        <input type="button" id="btnViewChanges" value="View Changes"/>
    </fieldset>
    <ul id="ulGradeList">

    </ul>
</body>
</html>
4

2 回答 2

2
$("#tmplGrades").tmpl(viewModel.grades).append("#ulGradeList"); 

I think you mean appendTo not append.

append appends content to the element selected, while appendTo appends the content selected to the element designated in the selector.

于 2011-02-04T23:02:44.177 回答
1

这是一个有效的示例:http: //jsfiddle.net/rniemeyer/ztgfG/

看起来在您的代码中,模板渲染位于未调用的名为renderList()的函数中。此外,如果您将数组传递给模板渲染,它将自动为数组中的每个项目执行此操作,因此您不需要使用 {{each}}。

JSFiddle 上的示例还展示了如何使用模板绑定让淘汰赛为您呈现模板。这样,您根本不必进行 .tmpl 调用。

希望这可以帮助。

于 2011-02-05T01:57:49.170 回答