Ng-包括,原型继承和对象与原始 - 奇怪的行为

时间:2014-01-13 22:40:44

标签: angularjs angularjs-scope

我的整体问题是:这是预期的行为吗?

我在这里有一个演示:http://plnkr.co/edit/RMGKxVMsbO6tOI1ftftQ?p=preview

我有一个字符串,一个bool,一个在三个不同范围内打印三次的整数。

首先在MainCtrl控制器范围的这些属性的版本中。

SubController有这些值的第二个实例,包括从它继承的父类中打印整数。

“Mess With Values”按钮将添加到整数,切换布尔值,字符串追加字符串。

我觉得很奇怪:

1)在单击“新子范围”按钮之前,对父项整数和其他基元的更改将反映在包含ng的子控制器实例的模板中。单击ng-included的按钮并尝试设置父项值后,不仅不会在第一个(父项)中更新值,而且还不会看到对值的进一步更新(使用第二个按钮)。

2)ng-included无法更新父元素值,包括基元和对象属性。非ng包含的可以更新父元素值。这是为什么?

我读过What are the nuances of scope prototypal / prototypical inheritance in AngularJS?虽然它非常棒,但我并没有看到一个解释这种奇怪现象的例子,特别是在尝试访问它们之前访问父母的属性。

感谢您的帮助SO社区。 :)

1 个答案:

答案 0 :(得分:1)

这里的问题是ng-include在子节点和父节点之间插入额外的$ scope。因此,当您的非ng-included部分更新$ parent时,它将更新您期望的父级。但是,当您从包含ng的部分更新$ parent时,您正在更新一个显然不可见的$ scope。

您可以在console.log($scope.parent)中添加testFunc()并扩展$parent层次结构来查看此内容。

相关问题