繁体   English   中英

如何在子作用域中修改父作用域中的控制器属性?

[英]How to modify controller property in parent scope from a child scope?

我有一个父控制器来管理ng-view中的局部视图。 它具有5个选项卡,每个选项卡都有一个表单。 每个表单都有其自己的控制器。

我在父范围中维护一个变量。 我想在子控制器的作用域之一中对其进行修改,以便其他控制器也可以查看更改。

这怎么可能 ? 请问像$ scope.sharedProperty = 5这样的语句

在父级中将其设为5,还是在子级范围内使用该值创建一个新值?

取决于您在何处进行输入。 如果您使用string,int,bool等在子控制器中进行更改,则其他控制器(包括父控制器)都不会看到它们,因为这将在子控制器上定义新属性。

如果在父控制器上创建对象(例如$ scope.sharedObject),则可以在子控件中的任何位置操纵它,例如

$scope.sharedObject.prop1="newvalue";

其他所有人将看到更改并使用$scope.$watch

在控制器之间共享数据的更好方法是使用服务。

也可以在这里阅读$ scope的原型继承https://github.com/angular/angular.js/wiki/Understanding-Scopes

同意@Chandermani的服务。 但是您也可以像这样修改父范围:

$scope.$parent.sharedProperty = someValue;

我建议将其用作共享属性的服务,这样可以避免创建依赖项,只考虑如果您需要重用视图,而不是将其作为直接子级,而是作为嵌套子级,那么使用服务角度可以为您轻松地进行管理。

例如,检查此答案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM