Qualcuno può spiegarmi cosa c'è di sbagliato nel modello di visualizzazione o nel modello in this example jsfiddle?Il binding del modello non funziona quando la fonte è null/indefinita
Non funziona come previsto. Fondamentalmente il modello di vista contiene un oggetto e quell'oggetto è null
. Nella vista, esiste un modello che si lega a questo oggetto. Poiché questo oggetto è nullo, non dovrebbe rendere il modello. Tuttavia, prova a rendere il modello e fallisce nel mio esempio. Se l'oggetto lavoro è nullo, allora non voglio rendere il modello.
In base a this article by Ryan, se un oggetto viewmodel contiene un oggetto nullo e esiste un "template
associazione" per questo oggetto, non renderà il modello.
Qui è la mia vista del modello:
var job = function(title) {
this.jobTitle = ko.observable(title);
}
var ViewModel = function(first, last) {
this.firstName = ko.observable(first);
this.lastName = ko.observable(last);
//this.job = ko.observable(new job("software developer"));
this.job = ko.observable(null);
this.fullName = ko.computed(function() {
return this.firstName() + " " + this.lastName();
}, this);
};
ko.applyBindings(new ViewModel("FirstName", "LastName"));
E questa è la vista:
<div class='liveExample'>
<p>First name: <input data-bind='value: firstName' /></p>
<p>Last name: <input data-bind='value: lastName' /></p>
<p data-bind="template: { name: 'editorTmpl', data: job }"></p>
<h2>Hello, <span data-bind='text: fullName'> </span>!</h2>
</div>
<script id="editorTmpl" type="text/html">
Job: <input data-bind='value: jobTitle' />
</script>
Anche se quello che dici è provare, questo è un violino con l'esempio di Ryan e ko 3.0. Funziona alla perfezione: http://jsfiddle.net/z54Ag/ –
@ GôTô no non funziona bene ... il 'li' viene reso con un' result' in esso, anche se 'selectedItem' in null .. – nemesv
Beh, sì, ma almeno non lancia un errore. Qualche idea sul perché uno lancia un errore e non l'altro? –