0

オブジェクトを ajax json データで動的に更新するには、ノックアウト マッピング プラグインを使用する必要があります。ただし、プロパティ タイプは変更されます。たとえば、次のような json データを受け取ります。

{"type": "A", "output": "これは A" }

また

{"タイプ": "B", "出力": {"名前": "B"}}

また

{"型": "C", "出力": ["C1", "C2", "c3"]}

タイプに応じてモデルを表示するために、フロントエンドにさまざまなビュー テンプレートがあります。しかし、出力タイプが固定されていないため、ko.mapping.fromJS(data, {}, viewModle) が機能しないという問題があります。どうすれば動的にマッピングできますか?

4

2 に答える 2

0

私は自分で答えを見つけました。アイテムを配列に入れるだけで、マッピングがうまくいきます。

data = [{"type" : "A", "output" : "This is A" }]
ko.mapping.fromJS(data, {}, viewModle)
data = [{"type" : "B", "output" : {"Name" : "B"}}]
ko.mapping.fromJS(data, {}, viewModle)
于 2012-10-10T07:44:35.977 に答える
0

各タイプを表す複数の JavaScript オブジェクトを作成できます。カスタム マッピングをプラグインにフィードして、オブジェクトの作成方法 (および作成するオブジェクトのタイプ) を制御できます。

このようなもの:

var mapping = {
create: function(json) {
    if(json.data.Type == 'A'){
        return new YourTypeA();

     }  
     //same for your other types
 }
}

var data = '[{ "Type": "A", "Titel": "Title1", "Description": "Description 1" }, { "Type": "B", "Titel": "Title 2", "Description": "Description 2" }, { "Type": "C", "Titel": "Title     3", "Description": "Description 3"}]';
    ko.mapping.fromJS(eval(data), mapping, viewModel);

お役に立てれば

于 2012-10-04T07:30:32.480 に答える