angulaire.js - L'injection de résolution dans le contrôleur échoue dans le routage angulaire JS
高洛峰
高洛峰 2017-05-15 17:02:13
0
1
775

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/

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

répondre à tous(1)
小葫芦

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;
  }
]);
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal