Ho un modello di visualizzazione che deve essere collegato a un evento click di un tag <li>
. Ecco il ViewModel e markupIl binding ad eliminazione diretta non è definito per il clic
var viewModel =
{
Folders: ['Inbox', 'Archive', 'Sent', 'Spam'],
SelectedFolder: ko.observable('Inbox'),
chosenFolderId: ko.observable(),
navigate: function() {
self.chosenFolderId(folder);
}
};
ko.applyBindings(viewModel);
E il markup è
<ul class="nav nav-list bs-docs-sidenav affix" data-bind="foreach:Folders">
@*<li data-bind="css:{active: $data == chosenFolderId() }">*@
<li>
<a href="#" data-bind="click:navigate">
<!-- ko text: $data -->
<!-- /ko -->
<i class="icon-chevron-right"></i>
</a>
</li>
</ul>
Il problema è in questa linea
<a href="#" data-bind="click:navigate">
e
<li data-bind="css:{active: $data == chosenFolderId() }">
sia la linea sopra è non essere collegato allo Navigate
e rispettivamente chosenFolderId
osservabili. Dice Navigate
non è definito. Non può essere analizzato . Same goes for
sceltoFolderId`.
Qualche idea sul perché sta succedendo?
Sì, l'ho già fatto con questo approccio ricercato. Ma volevo farlo con un pattern modulare invece di spingere semplicemente i binding attraverso le funzioni. Quindi con il tuo approccio perfettamente valido. Non posso fare lo stesso con il mio approccio? – Joy
@Joy Non ti seguo davvero ... puoi organizzare il tuo modellino di vista creando una funzione con il modello modulare. Puoi aggiornare il mio jsfiddle con il codice come lo immagini? – nemesv
@Joy Esistono alcuni modi per farlo funzionare con i letterali degli oggetti come questo: http://jsfiddle.net/8Y5cv/1/. Ma alla fine incontrerai alcuni casi in cui non sarà sufficiente per le tue esigenze. – nemesv