0

私のビューモデルでは、ユーザー プロパティを userDataSource.at(0) にバインドします。

vm.set('userDs',userDataSource);
userDataSource.fetch(function(){
   vm.set('user', userDataSource.at(0));
});

ユーザーデータを使用する限り、これは正常に機能します。しかし、データを更新しようとすると機能しません。

vm.user.set('DisplayName','John Doe');
vm.userDs.sync();

これは機能しません。問題は、vm.user が更新されたが、vm.userDs の最初の要素が変更されていないことです。user は userDs の最初の要素へのポインタではなく、最初の要素のコピーのようです。

次のようにするとうまくいきます:

vm.userDs.at(0).set('DisplayName','John Doe');
vm.userDs.sync();

しかし、それはかなり醜い回避策です。vm.user を userDs の要素へのポインタにしたいと思います。

4

1 に答える 1

1

これが機能しなかった理由は、定義後に dataSource のフィルターを変更したためです。

userDataSource = {
   ...
}
userDataSource.filter({/*filter config*/});

userDataSource 定義内でフィルターを移動すると、問題が解決しました。

userDataSource = {
   ...
   filter: {/*filter config*/}
}

なぜこれがそんなに大きな違いを生むのか、私はまだ完全には理解していませんが、少なくともそれを回避する方法は知っています.

于 2014-09-26T08:59:14.363 に答える