我正在使用 KOGrid 的仪表板上工作,我的想法是动态创建一堆小部件并将数据绑定到每个小部件的 kogrid 中。我有两个控制器(MVC4),其中第一个返回小部件名称列表,第二个返回 JSON 格式的每个小部件的结果(数据表)。我正在使用 JSON.Net JsonConvert 将结果转换为 json 格式,然后作为 JSON 内容结果传递。
我收到“未捕获的错误:初始化可观察数组时传递的参数必须是数组、null 或 undefined”。是嵌套的 JSON 调用有问题吗?处理复杂对象数组并将它们绑定到多个网格的最可靠方法是什么。如果我使用 knockout.mapping 有帮助吗?
var 小部件 = {};
var Widget = function (id, data) {
this.id = ko.observableArray(id || []);
this.data = ko.observableArray(data || []);
};
var ViewModel = function (data) {
var self = this;
self.widgets = ko.observableArray(
ko.utils.arrayMap(data, function (i) {
return new Widget(i);
}));
$.getJSON('Widgets/Get', null, function (data) {
$.each(data, function (index, item) {
$.getJSON('Home/GetWidgetDetails?widgetName=' + item.WIDGET_NAME,
function (result) {
self.widgets.push(new Widget({ id: item.WIDGET_NAME, data: result }));
});
});
});
};
ko.applyBindings(new ViewModel(widgets));