$ data和$ root在以下上下文中意味着什么

时间:2015-05-07 06:23:48

标签: knockout.js single-page-application

我正在关注knockoutjs网站上的教程。这是一个代码。

查看

<ul class="folders" data-bind="foreach: folders">
    <li data-bind="text: $data, css: { selected: $data == $root.chosenFolderId() },
               click: $root.goToFolder"></li>
</ul>

视图模型

function WebmailViewModel() {
    // Data
    var self = this;
    self.folders = ['Inbox', 'Archive', 'Sent', 'Spam'];
    self.chosenFolderId = ko.observable();
     self.goToFolder = function(folder) { self.chosenFolderId(folder); };
};

ko.applyBindings(new WebmailViewModel());

什么是$ data和$ root?他们在哪里定义(他们来自哪里)?

1 个答案:

答案 0 :(得分:4)

当您使用None绑定时,该块内的绑定范围是您要迭代的实际项目。但有时您需要“转义”该范围并获取对该范围之外的某些属性/方法的引用。

  • 使用foreach访问根视图模型
  • 使用$root访问当前范围的父对象

此外,您需要使用$parent来引用$data循环中的当前项。例如:

foreach

请参阅Documentation