Mam model widoku, który musi być dołączony do zdarzenia kliknięcia znacznika <li>
. Oto ViewModel i znacznikówWiązanie knockout jest niezdefiniowane dla kliknięcia
var viewModel =
{
Folders: ['Inbox', 'Archive', 'Sent', 'Spam'],
SelectedFolder: ko.observable('Inbox'),
chosenFolderId: ko.observable(),
navigate: function() {
self.chosenFolderId(folder);
}
};
ko.applyBindings(viewModel);
A znaczników jest
<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>
Problem jest w tym wierszu
<a href="#" data-bind="click:navigate">
i
<li data-bind="css:{active: $data == chosenFolderId() }">
Zarówno linia powyżej jest nie przywiązuje się do Navigate
funkcja i odpowiednio obserwowane chosenFolderId
. Mówi, że Navigate
jest niezdefiniowany. Nie można go przeanalizować: . Same goes for
selectedFolderId`.
Każdy pomysł, dlaczego to się dzieje?
Tak, już to zrobiłem z tym poszukiwanym podejściem. Ale chciałem, aby to zrobiło z modularnym wzorcem zamiast po prostu przepychać wiązania przez funkcje. Tak więc Twoje podejście jest całkowicie poprawne. Czy nie mogę zrobić tego samego z Moim podejściem? – Joy
@Joy Naprawdę nie podążam za tobą ... możesz zorganizować swoją funkcję tworzenia viewmodelu o strukturze modułowej. Czy możesz zaktualizować mój jsfiddle kodem, jak sobie to wyobrażasz? – nemesv
@Joy Istnieje kilka sposobów na to, aby działało to z literałami obiektowymi w następujący sposób: http://jsfiddle.net/8Y5cv/1/. Ale w końcu napotkasz kilka przypadków, w których to nie wystarczy dla twoich potrzeb. – nemesv