Knockoutjs css,函数调用

时间:2012-10-04 13:05:48

标签: knockout.js

我正在浏览官方网站上的教程:

Knockout single page application lesson

这是观点:

<!-- Folders -->
<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();

    // Behaviours    
    self.goToFolder = function(folder) { self.chosenFolderId(folder); };    
};

ko.applyBindings(new WebmailViewModel());

我不明白两件事:

  1. 'click:'事件正在调用javascript函数goToFolder,但是,没有参数,它如何知道单击哪个文件夹来设置selectedFolderId?

  2. 纠正我,如果我错了,行css:{selected:$ data == $ root.chosenFolderId()}表示当前所选对象$ data是否等于selectedFolderId(),因此css与选择的名称是启用吗?

  3. 干杯全部

1 个答案:

答案 0 :(得分:2)

以下是答案:

  1. 默认情况下,knockout将当前上下文传递给被调用的函数。在您的情况下,这是$data对象,其中包含以下字符串之一“收件箱”,“存档”,“已发送”,“垃圾邮件”。

  2. 是的,你是对的。这意味着selected css类将应用于<li>元素,其中$ data等于视图模型的chosenFolderId属性。