2016-02-12 51 views
0

嗨,我有一个问题:)我开发了一个角度项目,它在我的localhostapache工作正常。我在前端使用angular 1.4.3,在后端使用node.js。现在我需要使用Grunt来进行版本管理。 我做了许多配置(例如,枫树的东西禁用。it changes all variables names such as a,b,c from indexCounter,PersonCounter,AgencyCounter and it causes some problems.)但我每次尝试运行时都会收到错误。这就像[模块]找不到。我的项目在我的本地机器上运行如果我没有咕it它,但是在咕噜声之后,我以vendor.js vendor2.js and app.js的身份拍摄了3个文件。在vendor.js我有native angular js文件。在vendor2.js我有plugins。最后在app.js我有controllers。我按照这个顺序将它们添加到我的索引HTML中;grunt一个角度项目然后它错误,因为找不到模块

vendor.js vendor2.js app.js

你有想过这事?

回答

1

问题:在角度上,如果不使用.$inject或数组语法,则无法缩小代码。

解决方案

对于添加到您的模块的每个控制器,指导,服务等,您将需要添加连接字符串指定依赖额外的数组应注入你的服务,控制器等。

使用$inject属性

function mainController(indexCounter,PersonCounter,AgencyCounter) { 
    //Controller implementation 
} 
mainController.$inject=['indexCounter','PersonCounter','AgencyCounter']; 

angular 
    .module('mymodule') 
    .controller('mainController', mainController); 

使用阵列

var mainController; 
function controller(indexCounter,PersonCounter,AgencyCounter) { 
    //Controller implementation 
} 
mainController=['indexCounter','PersonCounter','AgencyCounter', controller]; 

angular 
    .module('mymodule') 
    .controller('mainController', mainController); 

当你不指定数组的依赖条件,角将设法找到基于其参数名称的注册的依赖。例如function mainController(indexCounter) {},那么角将尝试找到名为indexCounter的已注册依赖项。当代码没有被缩小时,它工作得很好。但是,缩小时,indexCounter参数名称将更改为较短的名称,例如a。并试图找到未在您的应用程序中注册的依赖关系a。它不会激发你的角度模块。

+0

非常感谢你,但我已经禁用了咕噜声的功能。现在它不会更改参数的名称。我相信有些不同。但你的回答很好,再次感谢你。 – crowz

相关问题