国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

angular.js - angular路由的控制器
PHP中文網(wǎng)
PHP中文網(wǎng) 2017-05-15 16:50:44
0
3
908

路由時(shí)兩個(gè)頁(yè)面能公用一個(gè)控制器嗎,例如

javascript    .state('a', {
        ...
        controller : 'aaaController'
    })
    .state('b', {
        ...
        controller : 'aaaController'
    })

如果行的話,控制器是獨(dú)立的作用域還是公用的,比如說(shuō)我在控制器裡聲明了個(gè)變數(shù)i,在a頁(yè)面中改變了i的值,當(dāng)我路由到b頁(yè)時(shí),i的值會(huì)跟著變嗎

PHP中文網(wǎng)
PHP中文網(wǎng)

認(rèn)證0級(jí)講師

全部回覆(3)
伊謝爾倫

最近也在學(xué)習(xí)angularjs,就樓主所說(shuō)的問(wèn)題,可以做一個(gè)簡(jiǎn)單的示範(fàn):

有如下的html結(jié)構(gòu),不同的view,相同的conroller

<p ng-controller="MyCtrl">
    <button ng-click="change()">change to 3</button>
</p>
<p ng-controller="MyCtrl">
    <button ng-click="show()">show</button>
</p>

部分controller代碼:

 .controller('MyCtrl', function ($scope, $log) {
        $scope.num = 2;
        $scope.change = function () {
            $scope.num = 3;
        };

        $scope.show = function () {
            $log.info($scope.num);
        };
    });

先點(diǎn)選show按鈕,輸出結(jié)果如下:

接著點(diǎn)選change to 3鈕,再點(diǎn)選show按鈕,結(jié)果如下:

從這個(gè)實(shí)驗(yàn)可以看出,雖然是同一個(gè)controller,但實(shí)際上scope是兩個(gè)完全不相干的scope。
scope的結(jié)構(gòu)也是樹(shù)狀的,同dom結(jié)構(gòu)對(duì)應(yīng),如上的html結(jié)構(gòu)就會(huì)有兩個(gè)scope。
再看一個(gè)明顯的例子:

 .controller('MyCtrl', function ($scope, $log) {
        $log.info('init scope...');
    });

看控制臺(tái)

結(jié)果列印了兩遍,說(shuō)明方法執(zhí)行了兩次。如果共享scope就不會(huì)執(zhí)行兩次了。

綜上:你在控制器裡聲明了個(gè)變數(shù)i,在a頁(yè)面中改變了i的值,當(dāng)你路由到b頁(yè)時(shí),i的值不會(huì)改變

hope help you!

我想大聲告訴你

這樣子使用比較奇怪,不太確定這樣使用是否可行

個(gè)人覺(jué)得正常的用法是:
一個(gè)頁(yè)面,一個(gè)控制器
如果是需要控制器之間共用變數(shù)和方法,可以透過(guò)在angular裡建立一個(gè)service存放變數(shù)和方法,在不同的controller裡面,注入我們寫的service就可以了

官方文件裡也有明確說(shuō)明service是用來(lái)share code的:
Services
Angular services are substitutable objects that are wired together using dependency injection (DI). You can use services to organize and share code across your app.

https://docs.angularjs.org/guide/services

伊謝爾倫

切換路由後控制器的生命週期就結(jié)束了,目前的$scope及子作用域就都死了。
如果需要在多個(gè)控制器之間共享數(shù)據(jù),可以使用服務(wù)。

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板