45

observableArrayビューモデルがあります。vmを作成した後、データを完全に置き換えたいと思いますobservableArray。これが私がそれをしている方法です:

//Initial Setup
var vm = {};
vm.roles = ko.observableArray([]);
ko.applyBindings(vm); 


//....replace array later on....
vm.roles(["1", "2"]);

これは正常に機能しているようですが、これが正しくなく、メモリリークが発生する可能性があるのではないかと心配していました。observableArrayすべてのデータを置き換えたいと仮定して、これが既存のデータを更新するための好ましい方法である場合、誰でも準拠できますか?

observableArray私はメソッドを持っていることに気づきremoveAll()、これをきれいに行うためにそれを呼び出す必要があるのか​​、それとも私がやっていることで大丈夫なのか疑問に思いました。

4

2 に答える 2

42

使用している手法は、のデータを完全に置き換えるために推奨されるアプローチですobservableArray。AnobservableArrayは実際には正常observableであり、基になる配列に作用して通知をトリガーする便利な配列操作のために追加の関数が追加されています。

于 2012-03-15T11:21:52.160 に答える
-6

推奨されるアプローチはIE9以下では機能しないことがわかりました。代わりに、オブジェクトを再作成しました。

vm.roles = ko.observableArray(["1","2"])
于 2013-09-19T16:27:05.597 に答える