Knockout将Json Array映射到Observable Array会出错

时间:2014-12-05 14:21:31

标签: javascript jquery arrays json knockout.js

将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在哪里?

1 个答案:

答案 0 :(得分:0)

您的脚本尝试使用它们后,很可能会包含ko和ko.mapping的js文件。

检查您的页面和布局,检查您的脚本是否在用于包含它们的<script>标记之前使用ko和ko.mapping(如果您要捆绑它们,请检查捆绑渲染)它们)。

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

您还可以在脚本之前显式包含ko和ko.mapping js文件,并检查这是否有效。

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