javascript - KnockoutJS 中变量 $data 的来源和用途是什么?

标签 javascript html knockout.js

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/

相关文章:

javascript - 下拉菜单根据选择显示不正确的图像

html - XHTML5 的文档类型是什么(HTML5 的 XML 序列化)?

javascript - 添加数据属性值作为 inline-css "width"值

javascript - 如何将 Knockout js 模型绑定(bind)到向导式 UI

javascript - 使用Phonegap上传文件: File Transfer Error: request body stream exhausted

javascript - 根据垂直滚动移动元素 - 最高效的方式?

javascript - knockout foreach 绑定(bind)不渲染任何内容

knockout.js - knockout 映射验证

javascript - 如何使用一个下拉菜单更新两个 Highcharts ?

html - 后退按钮的奇怪网站问题