2011-08-12 5 views
2

テンプレートを使用せずに観察可能な配列要素へのバインディングを理解してもらえますか?テンプレートなしの配列要素へのノックアウトのバインディングは一方向にしか作用しません

私は、アレイから提示しようとしているデータより多くを含むテーブルを持っています。私の配列は固定サイズなので、レイアウトの課題を避けるために、入力ボックスを配列要素に直接バインドしたかったのです。ビューに一方向でバインドすることはできますが、更新は認識されません。ここに私のサンプルです:jsfiddle

私は各要素を観測可能にしようとしましたが、私は同じ結果を得ます。

答えて

3

配列アイテムにアクセスするための構文では、変更があったときに(つまり書き込み可能ではないと判断して)片方向バインディングの値を更新するコールバックを作成しません。たとえば、あなたがやったならば、それは正常に動作します:

viewModel.test = viewModel.recipients()[0]; 

してから行った:だから

<input data-bind="value: test.emailAddress"/> 

、あなたのシナリオは、これはノックアウトで問題であることを示しています。これはテンプレートバインディングでも正しく動作しますが、テンプレートバインディングを使用しない場合は、emailAddressを観測可能にするためにも正しく動作します。 http://jsfiddle.net/rniemeyer/3JmbA/2/

だから、あなたはあなたのコンストラクタでEMAILADDRESSに観測可能になるだろうし、あなたの警告は関数として観測可能な値にアクセスする必要があります:

は、それは次のようになります。

+0

life saver !!!!! – Syam

+0

@RP Niemeyer:良い例。ちょっとしたことですが、jsfiddleのスクリプトはノックアウトスクリプトの参照がないため動作しません。実際のバージョンは次のとおりです: http://jsfiddle.net/huyoumo/3JmbA/60/ – DavidH