0

私はマッピングプラグインを初めて使用し、明らかな何かが欠けていると思います。

ko.mappingを取得して、監視可能な配列のメンバーを監視可能な配列として「深く」作成するにはどうすればよいですか?ドキュメントで「コールバックの作成」と「オプション」を見てきましたが、明らかなものは何もありません。

私はかなり大きなオブジェクトモデルを持っているので、viewModelを手動でバインドする必要はありません。また、副次的な問題として、オブザーバブルとして要素を動的に追加する必要もあります。

html

<p>
    here, ko.mapping succesfully creates an observable...<br/>
    <input data-bind="value:someText, valueUpdate:'afterkeydown'"></input>
</p>

<p>
    however, here, the contents of the observable array are not observables...</br>    
    <span data-bind="foreach: { data: years, as: 'year' }">

   <input data-bind="value:year, valueUpdate:'afterkeydown'"></input>

    <br />
    </span>
    <button data-bind="click:function(){addYear();}">add</button>
</p>

<p><br /><br /><div data-bind="text: ko.toJSON($root)"></div></p>

</ p>

javascript

var model={    
    someText: 'Hello',        
    years:[2000,2001,2002]
};

var viewModel = ko.mapping.fromJS(model);
viewModel.addYear=function(){viewModel.years.push(ko.observable(""));}
ko.applyBindings(viewModel);

</ p>

これがjsFiddleリンクです

よろしくお願いします。

DS

4

1 に答える 1

3

配列を単なる数値ではなく、プロパティの配列に変更する必要がありました。配列番号だけがある場合、マッピング プラグインはそれらをオブザーバブルに変換しません。

var model={    
    someText: 'Hello',        
    years:[{item:2000},{item:2001},{item:2002}]
    };

更新されたフィドルを参照してください

于 2012-11-28T00:44:17.637 に答える