我正在尝试编译使用Angular JS(ngbp样板文件)的应用程序。我是Angular和SPA概念的新手。这是一个相对简单的应用程序,设置由Grunt构建。 问题很奇怪 - 当我做一个咕噜咕噜的手表时,应用程序构建良好,一切运行完美。但是,如果我进行咕噜声编译,应用程序中的某些内容将无法正常工作。
例如,使用状态使用ui-router
的子模块的某些URL不会加载。控制台上没有错误。我的控制器都有内联依赖注入
例如。controller( 'app.subModule', ['$scope','localStorageService','$http','$rootScope','$stateParams', function($scope,localStorageService,$http,$rootScope,$stateParams) {.......})]);
缩小是否还有其他已知问题?
编辑:我做了一些调试,看起来只有这个特定的模块不能用于缩小。其余模块正在加载正常。该模块的代码是:EDIT2:我按照建议尝试使用ngmin,但这似乎并没有解决问题。只有这个模块无法加载。所有其他人都装得很好。所以我觉得问题出在这个模块的代码中。我也尝试手动注释函数,从pastebin代码粘贴中可以看出。
有人可以告诉我我做错了吗?
答案 0 :(得分:2)
缩小的主要问题是函数的DI注释 - 在缩小之前,所有具有依赖注入的函数都应该手动注释。它不仅涉及控制器 - 还有模块run
和config
,指令,服务,过滤器......
在大多数情况下使用grunt时,可以使用grunt-ngmin自动完成。
如果您需要一个很好的例子来配置所有这些 - 请查看yeoman/generator-angular
您需要为状态注释您的结果 - 因为它们不会被ngmin自动注释。您有:validState
和pmGetPlan
没有注释。
因为解析没有注释ui-router无法加载状态,默认情况下它是静默的...
您可以在$rootScope
上添加事件处理程序:
$rootScope.$on('$stateChangeError',
function (event, toState, toParams, fromState, fromParams, error) {
console.log('$stateChangeError', event, toState, toParams, fromState, fromParams, error);
});