Knockout: obliczona obserwowalność vs funkcja
Kiedy korzystasz z nokautu, jaka jest zaleta korzystania z obliczalnych obserwacji tylko do odczytu, a nie prostych funkcji?
Weźmy następujący konstruktor modelu widoku i fragment kodu HTML, na przykład:
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>
Wszystko tutaj wydaje się działać zgodnie z oczekiwaniami, więc jest powód, dla którego zamiast tego powinienem użyć:
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>
Zauważam, że dokumentacja nahttp://knockoutjs.com/documentation/computedObservables.html stwierdza, że „... deklaratywne powiązania są po prostu zaimplementowane jako obliczalne obserwowalne”, więc czy to oznacza, że muszę użyć ich bezpośrednio w moich modelach widoku?