【发布时间】:2011-12-11 22:29:18
【问题描述】:
在KnockoutJS tutorials 中,我偶然发现了以下代码示例,其中包含无法解释的变量$data。
视图(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>
视图模型 (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);
本教程不包含任何说明该美元符号的用途以及此$data 的来源。变量$data 没有定义,当我将$data 的所有三个实例重命名为$foobar 时,该示例不再起作用。
这里发生了什么魔法?
【问题讨论】:
-
好问题。我为此苦苦挣扎。
标签: javascript html knockout.js