Die Art, wie ich zu synchronisieren Modelle gefunden wird, um die Postbox Bibliothek von RP Niemeyer
mit Jedoch habe ich etwas Interessantes über die observableArray gefunden. Und deshalb habe ich eine neue Antwort gefunden. Nur um die Antwort von Niemeyer zu vervollständigen.
Wenn Sie Postbox und ObservableArray verwenden, werden die Ereignisse "subscribeTo" und "publishOn" ausgelöst, wenn Sie ein Element aus observableArray hinzufügen oder entfernen. Wenn Sie ein Element innerhalb des Arrays aktualisieren, wird nichts ausgelöst. Ich denke, das hat nichts mit der Postbox-Bibliothek zu tun, sondern eine Knockout-Beschränkung.
Wenn Sie versuchen, das Ereignis beim Aktualisieren eines Elements eines beobachtbaren Arrays zu erhalten, ist es besser, die Methoden "publish" und "subscribe" aus der Postbox-Bibliothek zu verwenden.
Bitte beachten Sie die folgenden FIDDLE
-Code-Referenz:
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");
}
das sieht gut aus, danke. – jaffa
@RP Niemeyer - Was ist der Unterschied zwischen ko-beschreibbaren und beobachtbaren? – Ryan
ko-beschreibbar ist eine Basis "Klasse", die beobachtbare und berechnete Observablen Funktionalität erhalten. Es stellt die grundlegenden Pub/Sub-Features zur Verfügung, die sowohl Observablen als auch berechnete Observablen verwenden. –