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 回答