angulaire.js - Préchargement et injection de contrôleur d'angular-ui-router
ringa_lee
ringa_lee 2017-05-15 17:11:59
0
2
533
Une fois que le

ui-router 预加载 resolve a obtenu les données, comment les injecter dans le contrôleur ?

Remarques :

  • Dans $state, j'importe le fichier du contrôleur via controllerUrl.

  • Ma version de l'interface utilisateur est 0.4.2.

Code de routage ↓

$stateProvider.state('dashboard', {
    url: '/dashboard',
    templateUrl: 'views/dashboard/index.html',
    resolve: {
        getList: function ($stateParams, $NetRequest){
            var options = {type: 'charts'};
            
            $NetRequest.post(options).then(function($ref){
                return $ref.data;
            });
        }
    },
    controllerUrl: 'views/dashboard/index',
    controller: 'DashboardController',
    controllerAs: 'vm'
});

Code de service ↓

service.post = function($options){
    var deferred = $q.defer();
    
    // 省略请求函数...
    
    return deferred.promise;
};

Si vous injectez getList directement dans le contrôleur à ce moment, le résultat sera undefined.

J'ai lu la documentation officielle et il y a un paramètre $inject, mais malheureusement il n'y a pas d'exemple je ne sais pas comment l'utiliser.

ringa_lee
ringa_lee

ringa_lee

répondre à tous(2)
仅有的幸福

Le problème est résolu, la méthode est en fait très simple - -

$stateProvider.state('dashboard', {
    url: '/dashboard',
    templateUrl: 'views/dashboard/index.html',
    resolve: {
        getList: function ($stateParams, $NetRequest){
            var options = {type: 'charts'};
            
            return $NetRequest.post(options);
            // 因为 $NetRequest.post 已经返回了结果
        }
    },
    controllerUrl: 'views/dashboard/index',
    controller: 'DashboardController',
    controllerAs: 'vm'
});
漂亮男人

'//Obtenir des données ici'. . . . Avez-vous rendu votre promesse ?

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal