情境:
我有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>
任何反馈和评论都会受到欢迎和赞赏。
答案 0 :(得分:1)
这是一个非常简单的错字:字段名称错误:
self.grades = ko.utils.arrayMap(parsedJSON, function (item) {
return new Grade(item.GradeID, item.Name, item.SpringPressure);
});