2016-09-06 1 views
2

Le problème est que je ne peux pas insérer de constante d'un module dans la configuration d'un autre module.Impossible d'injecter une constante dans une autre configuration de module

application principale:

'use strict'; 

angular.module('identicaApp', [ 
    'ngRoute', 
    'identicaApp.common', 
    'identicaApp.mainPage', 
    'identicaApp.aboutPage', 
    'identicaApp.registerPlayer' 
]).config(['$locationProvider', '$routeProvider', function ($locationProvider, $routeProvider) { 
    $locationProvider.hashPrefix('!'); 

    $routeProvider.otherwise({redirectTo: '/main'}); 
}]); 

common.js:

angular.module('identicaApp.common', []) 
    .constant('ROOT_PATH', '/static/angular/identica/'); 

et le module de problème:

'use strict'; 

angular.module('identicaApp.mainPage', [ 
    'ngRoute', 
    'identicaApp.common' 
]) 

.config(['$routeProvider', function($routeProvider) { 
    $routeProvider.when('/main', { 
    templateUrl: common.ROOT_PATH + 'main_page/main_page.html', 
    controller: 'MainPageCtrl' 
    }); 
}]) 

.controller('MainPageCtrl', [function() { 

}]); 

common.ROOT_PATH n'est pas visible par le chargeur ...

Répondre

0

Je pense que tu pour injecter la constante actuelle à votre appel config (par ex. de la même façon que vous injecter des services aux contrôleurs), puis vous devez référencer par son nom:

'use strict'; 

angular.module('identicaApp.mainPage', [ 
    'ngRoute', 
    'identicaApp.common' 
]) 

// Here you must inject your 'ROOT_PATH' constant 
.config(['$routeProvider', 'ROOT_PATH', function($routeProvider, ROOT_PATH) { 
    $routeProvider.when('/main', { 
    templateUrl: ROOT_PATH + 'main_page/main_page.html', // You must reference it by its name (ROOT_PATH) 
    controller: 'MainPageCtrl' 
    }); 
}]) 

.controller('MainPageCtrl', [function() { 

}]); 
+0

thx, débutant à angulaire :) – Compadre

+0

Vous êtes les bienvenus. Je suis content que ça a marché :) –

0

Vous devez inclure la constante et l'utiliser comme ceci:

.config(['$routeProvider', function($routeProvider, ROOT_PATH) { 
    $routeProvider.when('/main', { 
    templateUrl: ROOT_PATH + 'main_page/main_page.html', 
    controller: 'MainPageCtrl' 
    }); 
}]) 

Si vous voulez avoir plusieurs "variables" constantes sous ROOT_PATH le faire comme ça.

angular.module('identicaApp.common') 
    .constant('ROOT_PATH', { 
    'URL': '/static/angular/identica/', 
    'NAME': 'Test', 
    'ANOTHER_THING': 'Something' 
}); 

Ensuite, vous pouvez l'utiliser de cette façon:

.config(['$routeProvider', function($routeProvider, ROOT_PATH) { 
    $routeProvider.when('/main', { 
    templateUrl: ROOT_PATH.URL + 'main_page/main_page.html', 
    controller: 'MainPageCtrl' 
    }); 
}])