淘汰赛没有渲染

时间:2014-06-24 09:26:47

标签: javascript knockout.js

情境:

我有ViewModel,其中包含Grades列表。我需要让Knockout来渲染这些成绩,只需要名字就可以了。

当前输出:

ViewModel正在捕获数据。我知道这是因为我的代码中的一系列console.log()语句确实返回了我希望它返回的内容。

预期输出:

只有一系列<p>标签,其中包含等级名称。

链接:

小提琴: Here

PasteBin: Here

当前代码:

<html>
<head>
    <title></title>
    <?php 
        include "./includes/functions.php";
    ?>

    <script type="text/javascript" src="js/vendor/ko.js"></script>
    <script type="text/javascript" src="js/vendor/ko-mapping.js"></script>

    <script type="text/javascript">
        function load() {

            var parsedJSON = <?php echo json_encode(populateGrades()) ?>;
            console.log(parsedJSON);

            function Grade (id, name, springPressure) {
                this.id = ko.observable(id);
                this.name = ko.observable(name);
                this.springPressure = ko.observable(springPressure);
            }

            function ViewModel() {
                var self = this;

                self.grades = ko.utils.arrayMap(parsedJSON, function(item) {
                    return new Grade(item.id, item.name, item.springPressure);
                });

                console.log(self.grades);

                self.chosenGrade = ko.observable();

                self.json = ko.toJSON(self.grades);
            }

            ko.applyBindings(new ViewModel());

        }
    </script>


</head>
<body onload="load()">
    <!--  ko foreach: grades -->
        <p data-bind="name"></p>
    <!--  /ko -->
</body>
</html>

任何反馈和评论都会受到欢迎和赞赏。

1 个答案:

答案 0 :(得分:1)

这是一个非常简单的错字:字段名称错误:

self.grades = ko.utils.arrayMap(parsedJSON, function (item) {
    return new Grade(item.GradeID, item.Name, item.SpringPressure);
});

工作示例:http://jsfiddle.net/CZLn4/2/