recherche

Maison  >  Questions et réponses  >  le corps du texte

angulaire.js - L'injection de résolution dans le contrôleur échoue dans le routage angulaire JS

Parce qu'on constate que la résolution est non seulement déclenchée au chargement, mais également déclenchée au retour, mais le contrôleur obtenu n'est pas mis à jour au retour.
Dans cet exemple, les éléments obtenus par résolution sont également mis en service pour les obtenir. Au départ, je voulais essayer de changer la méthode d'injection pour voir si la situation est la même. Si cela ne fonctionne toujours pas, je le fais. prévoyez de le mettre dans le service ou de le résoudre. Les données ne sont utilisées que lorsqu'elles sont chargées.
J'ai donc voulu trouver un exemple pour le tester, mais l'injection échouait toujours.

Il n'y a pas de test injecté ici. Une erreur sera signalée lors de l'injection.
http://jsfiddle.net/abelmakihara/x99b2o2p/3/

高洛峰高洛峰2808 Il y a quelques jours803

répondre à tous(1)je répondrai

  • 高洛峰

    高洛峰2017-05-15 17:04:13

    C'est tout. Je l'ai regardé attentivement. Il y a quelque chose qui ne va pas dans votre compréhension de ngRoute. Veuillez y jeter un œil à nouveau : jsFiddle

    .

    La principale différence est :

    app.factory('rulesFactory', ['$q', '$timeout',
      function($q, $timeout) {
        return function() {
          return $q(function(resolve){
              $timeout(function() {
                  //这里如果期待返回值,就要用$q封装,并resolve
                  resolve('Change time in seconds:' + new Date().getTime() / 1000);
              }, 1000)
          });
        };
      }
    ]);
    $routeProvider
    .when('/', {
        action: 'index',
        resolve: {
            //这里的resolve真对的是该路由自己的controller
            'test': ['rulesFactory', function(rulesFactory) {
                return rulesFactory();
            }]
        },
        //所以一定要定义一个自己的AController
        controller: 'AController',
        template: '<h3>{{test}}</h3>'
    })
    .when('/page', {
        action: 'page',
        resolve: {
            'test': ['rulesFactory', function(rulesFactory) {
                return rulesFactory();
            }]
        },
        controller: 'BController',
        template: '<h3>{{test}}</h3>'
    })
    //然后,AController,BController就可以注入test了,并且test的值就是上面resolve的那堆字符串
    app.controller('AController', ['$scope', 'test',
    
      function($scope, test) {
        $scope.test = test;
      }
    ]);
    
    app.controller('BController', ['$scope', 'test',
    
      function($scope, test) {
        $scope.test = test;
      }
    ]);

    répondre
    0
  • Annulerrépondre