我正在浏览官方网站上的教程:
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());
我不明白两件事:
'click:'事件正在调用javascript函数goToFolder,但是,没有参数,它如何知道单击哪个文件夹来设置selectedFolderId?
纠正我,如果我错了,行css:{selected:$ data == $ root.chosenFolderId()}表示当前所选对象$ data是否等于selectedFolderId(),因此css与选择的名称是启用吗?
干杯全部
答案 0 :(得分:2)
以下是答案:
默认情况下,knockout将当前上下文传递给被调用的函数。在您的情况下,这是$data
对象,其中包含以下字符串之一“收件箱”,“存档”,“已发送”,“垃圾邮件”。
是的,你是对的。这意味着selected
css类将应用于<li>
元素,其中$ data
等于视图模型的chosenFolderId
属性。