4 回答
TA贡献1898条经验 获得超8个赞
angularjs不同控制器中的变量怎么使用
最简单的让控制器之间进行通信的方法是通过scope的继承。假设有两个控制器Parent、Child,Child 在 Parent 内,那Child 可以称为子控制器,它将继承父控制器Parent的scope。这样,Child就可以访问到Parent的scope中的所有函数和变量了。
需要注意的是,由于scope的继承也是基于Js的原型继承,如果变量是基本类型的,那在Child中的修改(写),有可能会导致Parent中的数据变脏。
TA贡献1784条经验 获得超9个赞
有时需要两个controller相互通信,我学习到的两个controller之间的通信是:父级controller通过广播向子controller传递信息,而子controller通过冒泡向父级controller传递信息。假如不是两个controller的话,可以构造一个父级controller,然后通过它来广播信息。还有一种是通过工厂模式来注册一个服务,通过服务来传递信息。而所说的冒泡和广播就是angularjs的$emit和$broadcast,通过这两种方法的话,要绑定事件,才可以进行广播或者冒泡。
下面这种是$emit和$broadcast
假如是父级controller和子controller的通信的话,也可以用$watch()来监控你要的信息。不过只能子级的监控父级。$watch("tag",function(){});tag是你要监控的变量了。
TA贡献1829条经验 获得超4个赞
举例:
.controller('a',['scope',$rootScope',function($scope,$rootScope){
$rootScope.u=$scope.username1
}]);
.controller('b',['scope',$rootScope',function($scope,$rootScope){
$scope.username2=$rootScope.u
}]);
说明:通过父子作用域来传递,a中的username1通过子作用域传递给父作用域$rootScope,然后在b中通过父作用域$rootScope传递给b中的username2,从而实现两个controller之间的数据传递
- 4 回答
- 0 关注
- 849 浏览
添加回答
举报