我的视图模型中有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()
方法,并想知道是否需要调用它来干净利落地完成这项工作,或者我是否对我正在做的事情很好?
答案 0 :(得分:41)
您正在使用的技术是完全替换observableArray
中数据的推荐方法。 observableArray
实际上只是一个普通的observable
,为有用的数组操作添加了额外的函数,这些函数作用于底层数组并触发通知。
答案 1 :(得分:-6)
我发现推荐的方法在IE9或更低版本中不起作用。相反,我重新创建了对象,
vm.roles = ko.observableArray(["1","2"])