Tim*_*Tom 12 javascript knockout.js
我只是从knockout.js中引用这些教程:
http://learn.knockoutjs.com/#/?tutorial=webmail
在UI中,标记是:
<!-- Folders -->
<ul class="folders" data-bind="foreach: folders">
<li data-bind="text: $data,
css: { selected: $data == $root.chosenFolderId() },
click: $root.goToFolder"></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
它的ViewModel是:
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());
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我什么是$ root,为什么需要它?如果我删除它,它不起作用.
fre*_*ish 29
$root是指KnockoutJS层次结构中的顶级模型(您使用的模型.applyBindings).在你的情况下,WebmailViewModel对象是$root.
这是必需的,因为当你foreach在循环中使用时,上下文会发生变化.您要在此处触发的所有内容都与循环中的元素相关联.因此,您需要$root使用在该上下文之外定义的函数/字段(在您的情况下chosenFolderId是WebmailViewModel对象的方法).
| 归档时间: |
|
| 查看次数: |
12915 次 |
| 最近记录: |