1

JSONからのデータは次のとおりです。

[
  {"ProjectName":"Region1.Site1","Turbine":"T1","Fault":0,"Description":"No Fault"},
  {"ProjectName":"Region1.Site1","Turbine":"T2","Fault":0,"Description":"No Fault"},
  {"ProjectName":"Region1.Site1","Turbine":"T3","Fault":1,"Description":"In Alarm"},
  {"ProjectName":"Region1.Site1","Turbine":"T4","Fault":1,"Description":"In Alarm"},
  {"ProjectName":"Region1.Site2","Turbine":"T1","Fault":0,"Description":"No Fault"},
  {"ProjectName":"Region1.Site2","Turbine":"T2","Fault":0,"Description":"No Fault"},
  {"ProjectName":"Region1.Site2","Turbine":"T3","Fault":1,"Description":"In Alarm"},
  {"ProjectName":"Region1.Site2","Turbine":"T4","Fault":1,"Description":"In Alarm"}
]

Project Nameこのデータを、、、、、のようなテーブルヘッダーを持つテーブルTurbineに 表示したいと思いFaultますDescription

Knockout.jsとマッピングプラグインも使用しています。これが私がこれまでに試したことを示すJSFiddleです。

私には主に2つの目標があります

  1. このデータをテーブルに入れます
  2. 障害ステータスが変更されるたびに行を更新します。各行は、ProjectNameとTurbineの組み合わせによって一意に識別されます。

Sandeepに感謝します。

マッピングプラグインを使用しようとすると、このステートメントに問題が発生します。

var viewModel = {};

viewModel.Stats = ko.mapping.fromJS(data);

私が間違っていることを教えてください。また、データの更新を受け取った場合、次のステートメントは機能しますか?

ko.mapping.fromJS(data,viewModel);

マッピングプラグインが機能していなかったため、ko.utils.Arraymap関数を使用する必要がありました。

ありがとう

4

3 に答える 3

1

これが作業コピーです。リンク

コードが壊れていました - 一致する中かっこがなく、統計の代わりに「データ」への参照がありました。

于 2012-05-09T09:02:03.987 に答える
0

余分な括弧と括弧があるようです (データ json 定義の後とapplyBindingsの後)。それ以外は、「foreach: Data」を「foreach:Stats」に変更して、 tbodyが viewModel のデータを指すようにするだけです。

于 2012-05-09T01:23:51.250 に答える
0

これは私がやっていることの例です。これは実質的に同じことです:

var UserRecord = function (data) {
    ko.mapping.fromJS(data, {}, this);
};

var mapping = {
    key: function (data) {
        return ko.utils.unwrapObservable(data.Id);
    },
    create: function (options) {
        return new UserRecord(options.data);
    }
};


function UserListViewModel() {
     this.users = ko.mapping.fromJS(data, mapping)
}

機能しなかった理由は、各配列アイテムの各プロパティが監視可能である必要があることを KO マッピングに伝える必要がある配列があるためです。

于 2012-05-09T11:57:24.787 に答える