Tengo un modelo de vista con observableArray
(llamado 'todo') de objetos. Una de las propiedades de ese objeto es un nombre observable
seleccionado. Quiero que se ejecute algún código siempre que cambie la propiedad seleccionada del objeto secundario del conjunto. Intenté suscribirme manualmente al all
a través de all.subscribe()
, pero ese código solo se dispara cuando se agregan o eliminan elementos. Actualicé el código para hacerlo así:Knockout.JS Arreglos observables de la matriz en elementos observables individuales
all.subscribe(function() {
ko.utils.arrayForEach(all(), function (item) {
item.selected.subscribe(function() {
//code to fire when selected changes
});
});
});
¿Es esta la manera correcta de hacer esto o hay una manera mejor?
Si elimino la matriz anterior con 'all ([])', ¿eso matará todas las suscripciones? El usuario realmente no interactúa directamente con esta colección, es como una colección de casillas de verificación y no se cambia dinámicamente. – arb
¿Por qué es una matriz observable entonces? Simplemente haz que sea una matriz normal que contenga objetos con propiedades observables. – Domenic
Para responder realmente a su pregunta: no, no lo hará. Las suscripciones solo se eliminan al llamar a 'subscription.dipose()', como se ve en la parte inferior de http://knockoutjs.com/documentation/observables.html – Domenic