我很擅长角色试图找出范围如何运作。
我定义了2个控制器OuterCtrl和InnerCtrl,InnerCtrl嵌套到OuterCtrl中。 它们都在范围内定义了相同的变量user.age。
据我所知,InnerCtrl和OuterCtrl有不同的范围,所以当我用表达式打印出来时,它们应该有不同的值
{{user.age}}
但结果显示内部范围似乎覆盖了外部范围。 test code
答案 0 :(得分:1)
因为所有子scopes
都将继承其父scopes
。
当Angular评估{{name}}时,它首先查看与name属性的给定元素关联的范围。如果未找到此类属性,则会搜索父作用域,依此类推,直到达到根作用域。在JavaScript中,这种行为称为原型继承,子范围原型继承自父母。
答案 1 :(得分:1)
内部范围从外部范围继承user
。内部控制器会覆盖该对象的age
属性。
如果您的内部控制器中也有$scope.user={};
,那么它将拥有自己的user
对象,您会看到不同的值。