La manera que encontré para modelos de sincronización está utilizando la biblioteca de buzón de correos RP Niemeyer
Sin embargo he encontrado algo interesante con respecto a la observableArray. Y es por eso que creé una nueva respuesta. Solo para completar la respuesta de Niemeyer.
Al utilizar el buzón de correos y un Arreglo observable, los eventos "suscribirse A" y "publicar en" se activan cuando agrega o elimina un elemento de la matriz observable. No enciende nada cuando actualiza un elemento dentro de la matriz. Creo que esto no tiene nada que ver con la biblioteca del buzón, sino con una limitación de nocaut.
Si está intentando obtener el evento al actualizar un elemento de una matriz observable, es mejor utilizar los métodos "publicar" y "suscribir" de la biblioteca del buzón de correos.
Por favor, vea la siguiente referencia FIDDLE
Código:
function FundEntity (fund)
{
var self = this;
self.id = fund.id;
self.fundName = fund.fundName;
self.description = fund.description;
self.isFavorite = ko.observable(fund.isFavorite);
}
function GridViewModel(model) {
var self = this;
self.fundList = ko.observableArray();
model.funds.forEach(function(fund) {
self.fundList.push(new FundEntity(fund));
});
self.favorite = function (id, index) {
var newValue = {
id: id,
index: index,
isFavorite: self.fundList()[index].isFavorite()
};
ko.postbox.publish("itemChanged", newValue);
return true;
};
self.isEditable = ko.observable().subscribeTo("myEditableTopic");
}
function FundDetailViewModel(model) {
var self = this;
self.fundList = ko.observableArray();
model.funds.forEach(function(fund) {
self.fundList.push(new FundEntity(fund));
});
ko.postbox.subscribe("itemChanged", function (newValue) {
self.fundList()[newValue.index].isFavorite(newValue.isFavorite);
});
self.editable = ko.observable(false).publishOn("myEditableTopic");
}
esto se ve genial, gracias. – jaffa
@RP Niemeyer - ¿Cuál es la diferencia entre ko.subscribable y observable? – Ryan
ko.subscribable es una "clase" base que observables y observables calculados obtienen funcionalidad de. Proporciona las características básicas de pub/sub que utilizan observables y observables computados. –