Замените все элементы в 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()
и задается вопросом, нужно ли это делать, чтобы сделать это чисто, или если я в порядке с тем, что я делаю?
Ответы
Ответ 1
Используемый вами метод является рекомендуемым методом для полной замены данных в observableArray
. observableArray
на самом деле просто нормальный observable
с дополнительными функциями, добавленными для полезных операций с массивами, которые действуют на базовый массив и вызывают уведомления.
Ответ 2
Я обнаружил, что рекомендуемый подход не работает в IE9 или ниже. Вместо этого я восстановил объект,
vm.roles = ko.observableArray(["1","2"])