Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在控制器中查找父作用域属性,就像在模板中一样_Javascript_Angularjs - Fatal编程技术网

Javascript 在控制器中查找父作用域属性,就像在模板中一样

Javascript 在控制器中查找父作用域属性,就像在模板中一样,javascript,angularjs,Javascript,Angularjs,有没有一种简单的方法可以从控制器读取父作用域之一中定义的属性?就像Angular在模板中所做的那样,正如文档所解释的: 当Angular计算{name}}时,它首先查看与name属性的给定元素关联的作用域。如果没有找到这样的属性,它将搜索父作用域,依此类推,直到到达根作用域。在JavaScript中,这种行为称为原型继承,子作用域原型继承自其父作用域 但是,如果您编写$scope.name,则此行为不会应用于控制器内部,它只会在当前范围内查看。非常容易完成:$scope.$parent.name

有没有一种简单的方法可以从控制器读取父作用域之一中定义的属性?就像Angular在模板中所做的那样,正如文档所解释的:

当Angular计算{name}}时,它首先查看与name属性的给定元素关联的作用域。如果没有找到这样的属性,它将搜索父作用域,依此类推,直到到达根作用域。在JavaScript中,这种行为称为原型继承,子作用域原型继承自其父作用域


但是,如果您编写
$scope.name
,则此行为不会应用于控制器内部,它只会在当前范围内查看。

非常容易完成:
$scope.$parent.name

请参见底部的参考

编辑
可以通过命名此SO答案中发布的控制器并由命名的父级访问它们来检索层次结构树中任何父级的作用域属性。

我知道解决方法,但如果该属性处于较高级别,则不起作用,我必须迭代“$parent”属性,直到找到它为止。这就是为什么我要求一个更简单的方法。我认为命名控制器是一个丑陋的解决方案,在OO编程中,您不需要指出父类名称就可以访问它继承的属性JavaScript不完全是一种OO编程语言,也不是Angular。这是真的,但是在这个主题中,在模板和控制器之间有一个不同的行为是令人困惑的,这当然与此相关!你能给出代码示例吗?因为子作用域总是可以用简单的方式从父作用域中获取道具$scope.someParentProp或{{someParentProp},或者你有独立的作用域。控制器也是如此。方法是一样的,但属性不是1-将
window.scope=$scope
添加到你的控制器中。2-