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

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

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

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

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

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

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

我觉得很奇怪:

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

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

我读过AngularJS中范围原型/原型继承的细微差别是什么? 虽然它非常棒,但我并没有看到一个解释这种奇怪现象的例子,特别是在尝试访问它们之前访问父母的属性。

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

采纳答案:

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

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

author: matt-way

参考更多解答: Ng-Include, Prototypical Inheritance and Objects Vs Primitives -- Weird Behavior ,转载请保留出处Ng-包括,原型继承和对象与原始 - 奇怪的行为及作者信息

Statement: We respect knowledge and authors. Since the content comes from the Internet and is intended for scientific research, any reprinters should retain the author's signature and origin. If you are the author of the content and feel in dispute, please contact email: 1076545519@qq.com. We will find out the situation and deal with it in time. We sincerely thank the author for his hard work.


更多:angularjs-scope