2012-02-13 3 views
0

オブジェクトのknockoutJS観察可能なプロパティを反復処理し、他の観測可能なプロパティを保持する別のオブジェクトにコピーできます。ターゲットオブジェクトはobservableArray内に存在します(この場合はターゲットが選択され、 '編集'ボタンクリックで設定されます)。オブジェクトのプロパティが単一のobservable(observableArrayではなく)であるかどうかをテストします。

'Item'は、ダイアログにバインドされたビューモデルに渡されます。キャンセルをクリックすると、項目は無視されます。okをクリックすると、データはサーバーに保存され、項目のプロパティは選択された項目にコピーされます。

現在、私はそうのようにそれをやっている:

function AttachCommitData(item) {     
     for (var prop in item) {    
      if (prop !== "undefined") { 
       vm.selected[item](item[prop]); 
      } 
     } 
    } 

これはそれを行う方法であれば、私はわからないんだけど、アイテムがobservableArrayを保持しているとして、それが例外をスローし、コピーがに観察が失敗する。 observableを反復するだけで、observableArrays、関数などのループ内の何かを見逃すことはありますか?

また、これが別のセットに観測値のセットを添付するための最良の方法であるかどうかをアドバイスすることができます。

答えて

0

私はおそらく、このためにマッピング・プラグインを使用します。

function attachCommitData(item){ 
    ko.mapping.fromJS(ko.mapping.toJS(item), vm.selected); 
} 

は、詳細については、マッピング・プラグインdocumentationを参照してください。

+0

vm.selectedに項目をマップしようとしましたが、vm.selectedは、マッピングプラグインを介して作成されたobservableArray内にある既に要素を指しています。それはそれを更新するようではありません。何か案は? – jaffa

+0

あなたの質問を明確にするために、あなたのコードをjsfiddleに投稿したいかもしれません。 –

関連する問題