4 回答

TA貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊
angularjs不同控制器中的變量怎么使用
最簡(jiǎn)單的讓控制器之間進(jìn)行通信的方法是通過(guò)scope的繼承。假設(shè)有兩個(gè)控制器Parent、Child,Child 在 Parent 內(nèi),那Child 可以稱為子控制器,它將繼承父控制器Parent的scope。這樣,Child就可以訪問(wèn)到Parent的scope中的所有函數(shù)和變量了。
需要注意的是,由于scope的繼承也是基于Js的原型繼承,如果變量是基本類型的,那在Child中的修改(寫),有可能會(huì)導(dǎo)致Parent中的數(shù)據(jù)變臟。

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個(gè)贊
有時(shí)需要兩個(gè)controller相互通信,我學(xué)習(xí)到的兩個(gè)controller之間的通信是:父級(jí)controller通過(guò)廣播向子controller傳遞信息,而子controller通過(guò)冒泡向父級(jí)controller傳遞信息。假如不是兩個(gè)controller的話,可以構(gòu)造一個(gè)父級(jí)controller,然后通過(guò)它來(lái)廣播信息。還有一種是通過(guò)工廠模式來(lái)注冊(cè)一個(gè)服務(wù),通過(guò)服務(wù)來(lái)傳遞信息。而所說(shuō)的冒泡和廣播就是angularjs的$emit和$broadcast,通過(guò)這兩種方法的話,要綁定事件,才可以進(jìn)行廣播或者冒泡。
下面這種是$emit和$broadcast
假如是父級(jí)controller和子controller的通信的話,也可以用$watch()來(lái)監(jiān)控你要的信息。不過(guò)只能子級(jí)的監(jiān)控父級(jí)。$watch("tag",function(){});tag是你要監(jiān)控的變量了。

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超4個(gè)贊
舉例:
.controller('a',['scope',$rootScope',function($scope,$rootScope){
$rootScope.u=$scope.username1
}]);
.controller('b',['scope',$rootScope',function($scope,$rootScope){
$scope.username2=$rootScope.u
}]);
說(shuō)明:通過(guò)父子作用域來(lái)傳遞,a中的username1通過(guò)子作用域傳遞給父作用域$rootScope,然后在b中通過(guò)父作用域$rootScope傳遞給b中的username2,從而實(shí)現(xiàn)兩個(gè)controller之間的數(shù)據(jù)傳遞
- 4 回答
- 0 關(guān)注
- 887 瀏覽
添加回答
舉報(bào)