2013-10-03 10 views
8

Sto provando a utilizzare le proprietà calcolate in un'altra proprietà calcolata e quando eseguo il codice viene visualizzato l'errore seguente nella console.Impossibile scrivere un valore su un ko.computed a meno che non si specifichi un'opzione di 'scrittura'

non può scrivere un valore a un ko.computed se non si specifica l'opzione '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()); 

e qui è il codice html e 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

perché utilizzare un input quando non è calcolabile? – Anders

+0

@Anders dispiace non ti ho preso? Sono molto nuovo in knockoutjs. – rahularyansharma

+0

@Anders OK capito, vuoi dire che quando non ci sono calcoli su upperFullName perché dovrei usare questo come calcolato. Sì hai ragione. ma come posso mostrare allora fullName maiuscolo? – rahularyansharma

risposta

8

self.fullName è una funzione, di ritorno il valore calcolato.

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

avviso la parentesi!

+0

Grazie man, accetterà la risposta con in 5 minuti. – rahularyansharma

Problemi correlati