猿问

请问该如何利用AngularJS绑定两个控制器并变量赋值?

如何利用AngularJS绑定两个控制器并变量赋值


凤凰求蛊
浏览 850回答 4
4回答

汪汪一只猫

angularjs不同控制器中的变量怎么使用最简单的让控制器之间进行通信的方法是通过scope的继承。假设有两个控制器Parent、Child,Child 在 Parent 内,那Child 可以称为子控制器,它将继承父控制器Parent的scope。这样,Child就可以访问到Parent的scope中的所有函数和变量了。需要注意的是,由于scope的继承也是基于Js的原型继承,如果变量是基本类型的,那在Child中的修改(写),有可能会导致Parent中的数据变脏。

千万里不及你

有时需要两个controller相互通信,我学习到的两个controller之间的通信是:父级controller通过广播向子controller传递信息,而子controller通过冒泡向父级controller传递信息。假如不是两个controller的话,可以构造一个父级controller,然后通过它来广播信息。还有一种是通过工厂模式来注册一个服务,通过服务来传递信息。而所说的冒泡和广播就是angularjs的$emit和$broadcast,通过这两种方法的话,要绑定事件,才可以进行广播或者冒泡。下面这种是$emit和$broadcast假如是父级controller和子controller的通信的话,也可以用$watch()来监控你要的信息。不过只能子级的监控父级。$watch("tag",function(){});tag是你要监控的变量了。

浮云间

举例:.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之间的数据传递
随时随地看视频慕课网APP
我要回答