angular.js - angular路由的控制器
PHP中文网
PHP中文网 2017-05-15 16:50:44
0
3
783

路由时两个页面能公用一个控制器吗,比如

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

如果行的话,控制器是独立的作用域还是公用的,比如说我在控制器里声明了个变量i,在a页面中改变了i的值,当我路由到b页面时,i的值会跟着变吗

PHP中文网
PHP中文网

认证0级讲师

répondre à tous(3)
伊谢尔伦

J'apprends également angulairejs récemment Concernant le problème évoqué par l'affiche, je peux faire une démonstration simple :

Il y a la structure html suivante, différentes vues, le même contrôleur

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

Partie du code du contrôleur :

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

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

Cliquez d'abord sur le bouton Afficher, le résultat de sortie est le suivant :

Cliquez ensuite sur le bouton Passer à 3 et cliquez à nouveau sur le bouton Afficher. Le résultat est le suivant :

.

Cette expérience montre que bien qu'il s'agisse du même contrôleur, les oscilloscopes sont en fait deux oscilloscopes totalement indépendants.
La structure de portée est également en forme d'arborescence, correspondant à la structure dom. La structure html ci-dessus aura deux portées.
Regardons un autre exemple évident :

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

Regardez la console

Le résultat est imprimé deux fois, indiquant que la méthode a été exécutée deux fois. Si la portée est partagée, elle ne sera pas exécutée deux fois.

Pour résumer : vous déclarez une variable i dans le contrôleur et modifiez la valeur de i dans la page a. Lorsque vous accédez à la page b, la valeur de i ne changera pas

.

J'espère vous aider !

我想大声告诉你

C'est bizarre de l'utiliser de cette façon, je ne sais pas si c'est faisable de l'utiliser de cette façon

Personnellement, je pense que l'utilisation normale est :
Une page, un contrôleur
Si vous avez besoin de partager des variables et des méthodes entre contrôleurs, vous pouvez créer un service en angulaire pour stocker les variables et les méthodes dans différents contrôleurs, injectez simplement le service que nous avons écrit

.

La documentation officielle indique également clairement que le service est utilisé pour partager du code :
Prestations
Les services angulaires sont des objets substituables qui sont connectés ensemble à l'aide de l'injection de dépendances (DI). Vous pouvez utiliser des services pour organiser et partager du code dans votre application.

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

伊谢尔伦

Après avoir changé d'itinéraire, le cycle de vie du contrôleur est terminé et le $scope actuel et les sous-portées sont morts.
Si vous devez partager des données entre plusieurs contrôleurs, vous pouvez utiliser des services.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!