我正在学习KnockoutJS,但是我不明白$root
和$parent
用法的区别。请查看this jsfiddle,或者下面的代码:
第一个
在上面的代码中,$root
和$parent
都用于相同的目的:引用外部作用域变量。我只是想知道$root
和$parent
的用法有什么区别吗?如果有,请用一个很好的例子帮助我理解正确的用法。
我正在学习KnockoutJS,但是我不明白$root
和$parent
用法的区别。请查看this jsfiddle,或者下面的代码:
第一个
在上面的代码中,$root
和$parent
都用于相同的目的:引用外部作用域变量。我只是想知道$root
和$parent
的用法有什么区别吗?如果有,请用一个很好的例子帮助我理解正确的用法。
1条答案
按热度按时间owfi6suc1#
它们相似但不同:
$root
表示应用于ko.applyBindings
的DOM的视图模型;$parent
为紧邻的外部范围;或者,从
$data
的Angular 来看:或者,用the relevant documentation的话来说:
$parent
:这是父上下文中的视图模型对象,直接位于当前上下文之外。$root
:这是根上下文中的主视图模型对象,即最顶层的父上下文。它通常是传递给ko.applyBindings
的对象。它等效于$parents[$parents.length - 1]
。$data
:这是当前上下文中的视图模型对象。在根上下文中,$data和$root是等效的。只有在视图模型嵌套了多个级别时,您才会看到实际的差异,否则它们将是相同的。
它的好处是相当简单地证明:
第一个
$root
总是相同的。$parent
是不同的,这取决于你嵌套的深度。