W KnockoutJS tutorials natknąłem się na poniższy przykład kodu, który zawiera niewytłumaczalną zmienną $data
.
The View (html):
<!-- Folders -->
<ul class="folders" data-bind="template: { name: 'folderTemplate', foreach: folders }"></ul>
<script type="text/html" id="folderTemplate">
<li data-bind="css: { selected: $data == mailViewModel.selectedFolder() },
click: function() { mailViewModel.selectFolder($data) }">
${$data}
</li>
</script>
widoku modelu (JavaScript):
var viewModel = {
// Data
folders: ['Inbox', 'Archive', 'Sent', 'Spam'],
selectedFolder: ko.observable('Inbox'),
// Behaviours
selectFolder: function (folder) {
this.selectedFolder(folder);
}
};
window.mailViewModel = viewModel;
ko.applyBindings(viewModel);
Tutorial nie zawiera żadnego wyjaśnienia, co to znak dolara jest używany i gdzie to $data
przychodzi od. Zmienna $data
nie jest nigdzie zdefiniowana i po zmianie nazwy wszystkich trzech wystąpień z $data
na $foobar
ten przykład już nie działa.
Jakiego rodzaju magia się tutaj dzieje?
wielkie pytanie. Walczyłem z tym. – DavidHyogo