KnockoutJS中变量$ data的起源和目的是什么?

dok*_*par 66 html javascript knockout.js

KnockoutJS教程中,我偶然发现了包含无法解释的变量的以下代码示例$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>
Run Code Online (Sandbox Code Playgroud)

视图模型(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);
Run Code Online (Sandbox Code Playgroud)

本教程不包含任何解释该美元符号的用途及其$data来源.该变量$data未定义,当我重命名为$datato的所有三个实例时$foobar,该示例不再起作用.

这里有什么样的魔力?

Der*_*ith 63

$ data是Knockout的Binding Contexts的一部分.

以下是所有内置变量:

  • $父
  • $父母
  • $根
  • $组件
  • $数据
  • $ index(仅在foreach绑定中可用)
  • $ parentContext
  • $ RAWDATA
  • $ componentTemplateNodes


The*_*ker 40

$data变量是用于指当前的对象被结合的内置变量.在示例中,这是viewModel.folders数组中的元素之一.

  • 还有其他内置变量吗? (3认同)
  • 他们真的应该解释一下 (3认同)