Wird empfohlen, berechnete Eigenschaften für das Prototypobjekt zu erstellen?Verwenden des Prototyps für KnockoutJS berechnete Eigenschaften
Dies ist, was ich unten versucht habe, aber die firstName
Bindung gibt die Funktion als Zeichenfolge zurück, anstatt sie auszuführen (http://jsfiddle.net/W37Yh).
var HomeViewModel = function(config, $, undefined) {
if (!this instanceof HomeViewModel) {
return new HomeViewModel(config, $, undefined);
}
this.firstName = ko.observable(config.firstName);
this.lastName = ko.observable(config.lastName);
};
HomeViewModel.prototype.fullName = function() {
return ko.computed(function() {
return this.firstName() + " " + this.lastName();
}, this);
};
var model = new HomeViewModel({
firstName: "John",
lastName: "Smith"
}, jQuery);
ko.applyBindings(model);
Nein, prototypbasierte Objekterstellung und Knockout gehen normalerweise nicht gut zusammen. – Niko
Ich zweite Sekunde, was Niko sagte, das Problem mit dem Prototyp ist alle Instanzen Ihrer Objekte werden versuchen, die gleichen auf dem Prototyp berechnet zu teilen. Sehr schlecht. Die unmittelbare Sache, die Sie sehen, ist der vollständige Name ist nur eine Funktion, die eine berechnete, nicht eine berechnete, also die Zeichenfolge zurückgibt. –