问题是我无法从一个模块向另一个模块配置插入常量。
myApp.module.js:
'use strict';
angular.module('myApp', [
'myApp.base',
'ui.router',
'ui.bootstrap',
'myApp.common'
]);
myApp.config.js
'use strict';
angular
.module('myApp')
.constant('appConfig', applicationConfiguration())
function applicationConfiguration() {
var config = {
debug: true
};
switch (window.location.hostname) {
case 'www.myapp.net':
config.apiUrl = 'www.myapp.net/';
config.publicSiteUrl = "www.myapp-public.net";
break;
case 'localhost':
config.apiUrl = 'http://localhost:61057/';
config.publicSiteUrl = "http://localhost:57563/";
break;
}
return config;
}
这是我尝试使用它的地方:
'use strict';
angular.module('myApp.base', [
'myApp'
])
.config(['$stateProvider','appConfig', function configState($stateProvider, appConfig) {
$stateProvider
.state('public', {
...
})
.state('publicSite', {
url: appConfig.publicSiteUrl,
external: true
});
}])
.run(function(){});
当我运行代码时,我继续收到以下错误:
Error: [$injector:modulerr] Failed to instantiate module myApp due to:
[$injector:modulerr] Failed to instantiate module myApp.base due to:
[$injector:unpr] Unknown provider: appConfig
答案 0 :(得分:1)
我不确切地知道你在做什么! :| (将常量放在应用程序中,而不是基础,并将路由放在基础而不是应用程序,或者不要将它们放在一起以及其他许多问题的原因)
但也许这会解决你的问题。
myApp.module.js:
'use strict';
angular.module('myApp', [
'ui.bootstrap',
'myApp.common'
]);
myApp.config.js
'use strict';
angular
.module('myApp')
.constant('appConfig', applicationConfiguration)
function applicationConfiguration() {
var config = {
debug: true
};
switch (window.location.hostname) {
case 'www.myapp.net':
config.apiUrl = 'www.myapp.net/';
config.publicSiteUrl = "www.myapp-public.net";
break;
case 'localhost':
config.apiUrl = 'http://localhost:61057/';
config.publicSiteUrl = "http://localhost:57563/";
break;
}
return config;
}
使用它:
'use strict';
angular.module('myApp.base', [
'myApp',
'ui.router',
])
.config(['$stateProvider','appConfig', function configState($stateProvider, appConfig) {
$stateProvider
.state('public', {
...
})
.state('publicSite', {
url: appConfig.publicSiteUrl,
external: true
});
}])
.run(function(){});