在KnockoutJS tutorials我偶然发现了以下代码示例,其中包含一个无法解释的变量 $data
。
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>
View 模型(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
时,该示例不再有效。
这里发生了什么样的魔法?
最佳答案
$data 是 Knockout's Binding Contexts 的一部分.
这里是所有的内置变量:
- $ parent
- $ parent
- $根
- $组件
- $数据
- $index(仅在 foreach 绑定(bind)中可用)
- $parentContext
- $原始数据
- $componentTemplateNodes
关于javascript - KnockoutJS 中变量 $data 的来源和用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7838853/