我无法构建一个存储所有配置数据的Angular模块,然后将其包含在我的主Angular模块中。
这个想法是让系统能够更改配置数据。所以主模块代码和控制器代码是相同的,但配置模块是不同的。
我尝试了许多不同的方法让它发挥作用,但它们都给了我一系列错误。
我的配置模块看起来像这样
(function( ){
angular.module('favoriteeats.config')
.constant('GLOBAL_CONFIG', {
'base_uri': '".url( )."'
});
});
我的主要(精简)模块看起来像这样。注意我使用托架的刀片模板。
(function( ){
var app = angular.module('favoriteeats', ['favoriteeats.config','ngResource'], function($interpolateProvider) {
$interpolateProvider.startSymbol('<%');
$interpolateProvider.endSymbol('%>');
})();
我的控制器看起来像这样。
(function( ){
var app = angular.module('favoriteeats');
app.controller('EntrustRolePermissions', function($scope, $controller) {
angular.extend(this, $controller('BaseController', {$scope: $scope}));
var vm = this;
vm.roles = [ ];
vm.user_roles = [ ];
vm.updateRoles = function(){
ret = vm.restApi('role','GET');
console.log(ret);
}
vm.updateRoles( );
}) //end contoller
})();
当我在头部包含配置模块脚本时,我收到此错误。
&#34;错误:[$ injector:modulerr]由于以下原因,无法实例化模块收藏夹: [$ injector:modulerr]无法实例化模块favoriteeats.config,原因如下: [$ injector:nomod]模块&#39; favoriteeats.config&#39;不可用!您要么错误拼写了模块名称,要么忘记加载它。如果注册模块,请确保将依赖项指定为第二个参数。&#34;
当我在lazying加载JS后在页脚中包含配置模块脚本时,我得到了同样的错误。
如果我将配置模块脚本添加到单独的JS文件中并在主模块js文件之前或之后添加它,我会得到相同的错误。
它似乎工作的唯一方法是,如果我包含在相同的`(function(){&#39;容器作为主模块.IE
(function( ){
angular.module('favoriteeats.config')
.constant('GLOBAL_CONFIG', {
'base_uri': '".url( )."'
});
var app = angular.module('favoriteeats', ['favoriteeats.config','ngResource'], function($interpolateProvider) {
$interpolateProvider.startSymbol('<%');
$interpolateProvider.endSymbol('%>');
})();
这是为什么?如何从其他位置提取并包含我的配置脚本!?!?我找不到确定错误的答案。
答案 0 :(得分:0)
你有一个有缺陷的IIFE。
(function( ){
angular.module('favoriteeats.config')
.constant('GLOBAL_CONFIG', {
'base_uri': '".url( )."'
});
}); // This does not close the IIFE.
将其更改为:
(function( ){
angular.module('favoriteeats.config')
.constant('GLOBAL_CONFIG', {
'base_uri': '".url( )."'
});
}()); // or })();
编辑; 我甚至没有注意到你没有定义你的模块,而是引用它。像@joao和@mithon建议的那样 - 添加一些括号:
angular.module('favoriteeats.config', [])
答案 1 :(得分:0)
您应该通过指示模块的依赖关系(在本例中为空数组)来声明模块,然后您必须执行该函数:
(function( ){
angular.module('favoriteeats.config', [])
.constant('GLOBAL_CONFIG', {
'base_uri': '".url( )."'
});
})();
答案 2 :(得分:0)
您引用了“favoriteeats.config&#39;模块而不是定义它。如果添加空的依赖项列表,它应该可以工作。
angular.module('favoriteeats.config', [])