knockout.js $root和$parent之间有什么区别?

xzlaal3s  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(156)

我正在学习KnockoutJS,但是我不明白$root$parent用法的区别。请查看this jsfiddle,或者下面的代码:
第一个
在上面的代码中,$root$parent都用于相同的目的:引用外部作用域变量。我只是想知道$root$parent的用法有什么区别吗?如果有,请用一个很好的例子帮助我理解正确的用法。

owfi6suc

owfi6suc1#

它们相似但不同:

  • $root表示应用于ko.applyBindings的DOM的视图模型;
  • $parent为紧邻的外部范围;

或者,从$data的Angular 来看:

或者,用the relevant documentation的话来说:

  • $parent:这是父上下文中的视图模型对象,直接位于当前上下文之外。
  • $root:这是根上下文中的主视图模型对象,即最顶层的父上下文。它通常是传递给ko.applyBindings的对象。它等效于$parents[$parents.length - 1]
  • $data:这是当前上下文中的视图模型对象。在根上下文中,$data和$root是等效的。
    只有在视图模型嵌套了多个级别时,您才会看到实际的差异,否则它们将是相同的。

它的好处是相当简单地证明:
第一个
$root总是相同的。$parent是不同的,这取决于你嵌套的深度。

相关问题