4 回答

TA貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊
angularjs不同控制器中的變量怎么使用
最簡(jiǎn)單的讓控制器之間進(jìn)行通信的方法是通過scope的繼承。假設(shè)有兩個(gè)控制器Parent、Child,Child 在 Parent 內(nèi),那Child 可以稱為子控制器,它將繼承父控制器Parent的scope。這樣,Child就可以訪問到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通過廣播向子controller傳遞信息,而子controller通過冒泡向父級(jí)controller傳遞信息。假如不是兩個(gè)controller的話,可以構(gòu)造一個(gè)父級(jí)controller,然后通過它來廣播信息。還有一種是通過工廠模式來注冊(cè)一個(gè)服務(wù),通過服務(wù)來傳遞信息。而所說的冒泡和廣播就是angularjs的$emit和$broadcast,通過這兩種方法的話,要綁定事件,才可以進(jìn)行廣播或者冒泡。
下面這種是$emit和$broadcast
假如是父級(jí)controller和子controller的通信的話,也可以用$watch()來監(jiān)控你要的信息。不過只能子級(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
}]);
說明:通過父子作用域來傳遞,a中的username1通過子作用域傳遞給父作用域$rootScope,然后在b中通過父作用域$rootScope傳遞給b中的username2,從而實(shí)現(xiàn)兩個(gè)controller之間的數(shù)據(jù)傳遞
- 4 回答
- 0 關(guān)注
- 876 瀏覽
添加回答
舉報(bào)