Подтвердить что ты не робот

Замените все элементы в 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 при условии, что вы хотите заменить все его данные?

Я заметил, что observableArray имеет метод removeAll() и задается вопросом, нужно ли это делать, чтобы сделать это чисто, или если я в порядке с тем, что я делаю?

4b9b3361

Ответ 1

Используемый вами метод является рекомендуемым методом для полной замены данных в observableArray. observableArray на самом деле просто нормальный observable с дополнительными функциями, добавленными для полезных операций с массивами, которые действуют на базовый массив и вызывают уведомления.

Ответ 2

Я обнаружил, что рекомендуемый подход не работает в IE9 или ниже. Вместо этого я восстановил объект,

vm.roles = ko.observableArray(["1","2"])