2016-02-12 52 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

相關問題