将 Json 数组挖空映射到可观察数组得到错误

Knockout mapping Json Array to Observable Array get error

本文关键字:数组 观察 错误 映射 Json      更新时间:2023-09-26

我在将 json 数组映射到可观察数组时遇到问题。

我收到一个错误"无法从未定义的属性'从 JSON'读取"

这是我链接的淘汰脚本:

淘汰赛-3.2.0.jsKNOCKOUT.mapping-latest.jsKNOCKOUT.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());

错误在哪里?

很可能你在脚本尝试使用它们之后包含了 ko 和 ko.mapping 的 js 文件。

查看您的页面和布局,并检查您的脚本是否在用于包含它们的<script>标记之前使用 ko 和 ko.mapping(或捆绑呈现,如果您正在捆绑它们)。

您可以在浏览器中检查页面的源代码,或查看_layout.cshtml以检查这是否是问题所在。请特别注意scripts部分的呈现位置(如果它在布局中定义并在页面中使用)。

您还可以在脚本之前显式包含 ko 和 ko.mapping js 文件,并检查这是否使其正常工作。

如果这是问题所在,请按正确的顺序包含脚本,或者在加载完所有页面后运行脚本,例如在$(document).ready(function {/*your script here*/})中使用它们。