【发布时间】:2015-07-28 22:39:06
【问题描述】:
我正在学习 KnockoutJS,但我不明白 $root 和 $parent 用法之间的区别。请查看this jsfiddle,或以下代码:
<div data-bind="foreach:mainloop">
$data Value: <span data-bind="text:$data.firstName"></span>
<span data-bind="text:$data.lastName"></span> --(1)
<br/>
$parent Value: <span data-bind="text:firstName"> </span>
<span data-bind="text:$parent.lastName"></span>
<br/>
$root Value: <span data-bind="text:firstName"></span>
<span data-bind="text:$root.lastName"></span>
<br/>
<hr/>
</div>
var mainLoopModel = function () {
var self = this; // Root Level scope
self.mainloop = ko.observableArray([{
'firstName': 'jhon'
}, {
'firstName': 'sam'
}]);
self.lastName = ko.observable('peters');
/*if you remove $data before lastName in note (1) you get undefined error because because mainloop dont have lastName root model has lastName so you have to access using parent or higher level */
}
ko.applyBindings(new mainLoopModel());
在上面的代码中$root 和$parent 都用于同一个目的:引用外部范围变量。我只是想知道$root 和$parent 用法之间有什么区别吗?如果是,请帮助我理解正确用法的好例子。
【问题讨论】:
-
你可以有多个级别的父母/祖先(例如
foreach在foreach中)。$parent是 直接父级,$root是最外层父级。 -
淘汰文档相当不错,请阅读相关章节:绑定上下文knockoutjs.com/documentation/binding-context.html
标签: knockout.js