角度内部范围覆盖范围

时间:2014-04-22 14:40:57

标签: angularjs angularjs-directive angularjs-scope

我很擅长角色试图找出范围如何运作。

我定义了2个控制器OuterCtrl和InnerCtrl,InnerCtrl嵌套到OuterCtrl中。 它们都在范围内定义了相同的变量user.age。

据我所知,InnerCtrl和OuterCtrl有不同的范围,所以当我用表达式打印出来时,它们应该有不同的值

{{user.age}}

但结果显示内部范围似乎覆盖了外部范围。 test code

为什么会这样?

2 个答案:

答案 0 :(得分:1)

因为所有子scopes都将继承其父scopes

来自Angular docs

的示例
  

当Angular评估{{name}}时,它首先查看与name属性的给定元素关联的范围。如果未找到此类属性,则会搜索父作用域,依此类推,直到达到根作用域。在JavaScript中,这种行为称为原型继承,子范围原型继承自父母。

答案 1 :(得分:1)

内部范围从外部范围继承user。内部控制器会覆盖该对象的age属性。

如果您的内部控制器中也有$scope.user={};,那么它将拥有自己的user对象,您会看到不同的值。

相关问题