web-dev-qa-db-ja.com

Knockout.js observableArrayのすべての要素を置き換えます

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

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


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

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

私はobservableArrayremoveAll()メソッドがあることに気付き、これをきれいに実行するために呼び出す必要があるのか​​、それとも私がやっていることで問題ないのかと思いました。

44
C.J.

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

41
RP Niemeyer