2

私は 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));
4

1 に答える 1

0

クラスのdata小道具でこのエラーが発生していると思いますか?Widgetもしそうなら、はい、それはおそらくdata配列のJSON構造です。それら自体が複雑なオブジェクトである場合は、ウィジェットに対して行ったのと同じプロセスを繰り返す必要があります。

  1. これらのアイテムのオブジェクト定義を作成します。おそらくWidgetItem
  2. 配列をko.utils.arrayMapにマップするために使用します。dataWidgetItem
  3. 成功。

しかし、その構造を見dataずに、これ以上具体的なことは言えません。

于 2012-07-25T20:33:07.703 に答える