我是 Javascript MVC 框架 Knockout.js 的初学者
来自传统的 Javascript(以及一些 jQuery 经验),我在理解学习 Knockout.js 的语法时遇到困难
考虑以下陈述;
风景:
<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); };
};
您能否解释一下这些语句的作用(特别是 $data、$root)?
还有什么声明self.chosenFolderId(folder);
does ?
$data 和 $root 关键字通常由 KO 使用。
当您在数组上使用 foreach(数据绑定)时,KO 会创建一个<li>
对于数组中的每个元素。
在这种情况下,$data 是数组的当前项(如folders[i]),$root 是父元素。
对于您来说,文件夹是 ViewModel 的一个字段:
$data = 迭代中的当前文件夹 (viewModel.folder[i])
$root = 视图模型
self.chosendFolderId(folder) 执行您的 viewModel selectedFolderId 方法。该代码使用 self 来保留 viewModel 值,因为在函数中关键字“this”不是 viewModel,而是方法的发送者。这是一个关闭。
编辑 :
$parent 关键字是树的上一级。
$root 关键字是顶层树的级别。
viewModel {
topObjects : ko.observableArray()
}
viewModel.topObjects.push({
Objects : ko.observableArray()
});
如果我们在 viewModel.topObjects.Objects 上创建 foreach,则 $parent 是 topObjects,$root 是 viewModel。
谢谢托里莫里;-)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)