2013-10-03 15 views
8

Próbuję użyć właściwości obliczeniowych w innych obliczonych właściwościach, a po uruchomieniu kodu otrzymuję następujący błąd w konsoli.Nie mogę zapisać wartości do ko.computed, chyba że podasz opcję 'write'

nie można zapisać wartość do ko.computed chyba że podasz opcję 'write'

function AppViewModel() { 
    var self = this; 
    self.firstName = ko.observable('rahul'); 
    self.lastName = ko.observable('sharma'); 
    self.fullName = ko.computed(function() { 
     return self.firstName() +' ' + self.lastName(); 
    }); 
    self.upperFullName = ko.computed(function() { 
     return self.fullName.toUpperCase(); 
    }); 
} 
// Activates knockout.js 
ko.applyBindings(new AppViewModel()); 

i tu jest kod html i js fiddle link

<p><input data-bind="value: firstName"></p> 

<p><input data-bind="value: lastName"></p> 

<p><input data-bind="value: fullName"></p> 

<p> <span data-bind="text: upperFullName"> </span> </p> 
+0

dlaczego warto używać danych wejściowych, gdy nie jest on zapisywalny? – Anders

+0

@Alerze przepraszamy, że cię nie dostałem? Jestem bardzo nowy w knockoutjs. – rahularyansharma

+0

@Anders OK, chciałbyś powiedzieć, że gdy nie ma obliczeń na upperFullName, dlaczego powinienem używać tego jako obliczonego.Tak masz rację. ale jak mogę wyświetlać duże litery fullName? – rahularyansharma

Odpowiedz

8

self.fullName jest funkcją, wracając obliczona wartość.

self.upperFullName = ko.computed(function() { 
    return self.fullName().toUpperCase(); 
}); 

zwróć uwagę na nawias!

+0

Dzięki człowieku, przyjmiesz odpowiedź w ciągu 5 minut. – rahularyansharma

Powiązane problemy