Bei Verwendung von Knockout, was ist der Vorteil der Verwendung von schreibgeschützten berechneten Observablen anstelle von einfachen Funktionen?Knockout: berechnete Observable vs Funktion
Nehmen Sie die folgenden Ansichtsmodell Konstruktor und HTML-Schnipsel, zum Beispiel:
var ViewModel = function(){
var self = this;
self.someProperty = ko.observable("abc");
self.anotherProperty = ko.observable("xyz");
self.someComputedProperty = function(){
return self.someProperty() + self.anotherProperty();
};
};
<input data-bind="value: someProperty"/>
<input data-bind="value: anotherProperty"/>
<p data-bind="text: someComputedProperty()"></p>
Alles hier scheint zu funktionieren, wie man erwarten würde, so gibt es einen Grund, warum ich stattdessen verwenden sollten:
var ViewModel = function(){
var self = this;
self.someProperty = ko.observable("abc");
self.anotherProperty = ko.observable("xyz");
self.someComputedProperty = ko.computed(function(){
return self.someProperty() + self.anotherProperty();
});
};
<input data-bind="value: someProperty"/>
<input data-bind="value: anotherProperty"/>
<p data-bind="text: someComputedProperty"></p>
Ich stelle fest, dass die Dokumentation unter http://knockoutjs.com/documentation/computedObservables.html besagt, dass "... deklarative Bindungen einfach als berechnete Observablen implementiert werden", also bedeutet das, dass ich sie explizit in meinen Viewmodels verwenden muss?
Große Antwort: Danke! – Duncan
Gute Antwort. Ich benutze manchmal eine Funktion anstelle einer berechneten, wenn ich möchte, dass die volle Logik jedes Mal ausgeführt wird. –
Woher weiß es, dass ein berechnetes Observable von einem anderen Observablen abhängt, wenn alles, was ich passiert habe, eine Funktion war? Wird diese Funktion analysiert? - Zeit, um den Knockout-Quellcode zu lesen, ich denke, – zod