私は KOGrid を使用しているダッシュボードで作業しています。私の考えは、一連のウィジェットを動的に作成し、各ウィジェットのデータを kogrid にバインドすることです。私は 2 つのコントローラー (MVC4) を持っています。最初のコントローラーはウィジェット名のリストを返し、2 番目のコントローラーは各ウィジェットの結果 (データテーブル) を JSON 形式で返します。JSON.Net JsonConvert を使用して結果を json 形式に変換し、JSON コンテンツの結果として渡します。
「キャッチされないエラー: 監視可能な配列を初期化するときに渡された引数は、配列、または null、または未定義でなければなりません」というメッセージが表示されます。ネストされた 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));