1

我正在阅读官方网站上的教程:

Knockout 单页应用教程

这是视图:

<!-- 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 是 enable 吗?

祝大家欢呼

4

1 回答 1

2

以下是答案:

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

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

于 2012-10-04T13:17:19.883 回答