将json数组映射到可观察数组时遇到了问题。
我收到错误“无法读取来自未定义的'JSON'的属性”
这是我的链接淘宝脚本:
敲除3.2.0.js knockout.mapping-latest.js knockout.mapping-latest.debug.js
我的Json数组如下所示:
[
{"$id":"1","GR":10},
{"$id":"2","GR":20},
{"$id":"3","GR":30},
{"$id":"4","GR":40},
{"$id":"5","GR":50},
{"$id":"6","GR":60},
{"$id":"7","GR":70},
{"$id":"8","GR":80}
]
这是我的vieModel:
function FormViewModel() {
var self = this;
self.CpGrp = ko.observable([]);
self.GR = ko.observableArray();
$(document).ready(function (){
....
done: function (e, data) {
$(".progress").removeClass("progress-striped active"); // we're done
debugger;
var test
$.getJSON("/api/Points",
function (dataa) {
dataType: 'json'
test = ko.toJSON(dataa);
ko.mapping.fromJSON(test, {}, self)
}
)},
ko.applyBindings(new FormViewModel());
Bug在哪里?
答案 0 :(得分:0)
您的脚本尝试使用它们后,很可能会包含ko和ko.mapping的js文件。
检查您的页面和布局,检查您的脚本是否在用于包含它们的<script>
标记之前使用ko和ko.mapping(如果您要捆绑它们,请检查捆绑渲染)它们)。
您可以在浏览器中查看该页面的源代码,或查看_layout.cshtml
以检查是否存在此问题。请特别注意scripts
部分的呈现位置,是否在您的布局中定义并在页面中使用。
您还可以在脚本之前显式包含ko和ko.mapping js文件,并检查这是否有效。
如果出现此问题,请按正确的顺序包含脚本,或者在加载完所有页面后运行脚本,例如在$(document).ready(function {/*your script here*/})
内使用它们。