-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"); 

私はあなたがそうではappendToないという意味だと思いますappend

append選択した要素にコンテンツをappendTo追加し、セレクターで指定した要素に選択したコンテンツを追加します。

于 2011-02-04T23:02:44.177 に答える
1

動作するサンプルは次のとおりです。http://jsfiddle.net/rniemeyer/ztgfG/

コードでは、テンプレートのレンダリングは、呼び出されていないrenderList()という関数に含まれているようです。さらに、配列をテンプレートレンダリングに渡すと、配列内のアイテムごとに自動的に処理されるため、{{each}}を使用する必要はありませんでした。

JSFiddleのサンプルは、テンプレートバインディングを使用してノックアウトでテンプレートをレンダリングする方法も示しています。そうすれば、.tmpl呼び出しを行う必要はまったくありません。

お役に立てれば。

于 2011-02-05T01:57:49.170 に答える