javascript - angularjs 控制器寫法
問題描述
angular.module(’myApp’,[]).controller(’DemoController’,[’$rootScope’,’$scope’,’$http’,function($rootScope,$scope,$http){}])angular.module(’myApp’,[]).controller(’DemoController’,function($rootScope,$scope,$http){})
這兩種有什么區別?
問題解答
回答1:后面 function 傳入的參數無順序與數量要求.
第一種將傳入 function 的變量用字符串 ’$rootScope’,’$scope’,’$http’ 的方式指明, 第二種只是簡單的變量名.
因為 js 壓縮工具會將 function($rootScope,$scope,$http) 里的 $rootScope,$scope,$http 混淆壓縮掉, 比如換成了 function(a,b,c).
代碼混淆壓縮后 angular 不知道向 function 里傳入的參數(或依賴)是啥, 導入壓縮后不能運行.
回答2:這是angular依賴注入的兩種方式:第一個是行內注入,第二個是推斷式注入 (還有一種是顯示注入)區別是行內注入:允許我們在函數定義時從行內將參數傳入。此外,它可以避免在定義過程中使用臨時變量。推斷式注入:如果沒有明確的聲明, Angular會假定參數名稱就是依賴的名稱,但這個過程只適用于未經過壓縮和混淆的代碼,因為Angular需要原始未經壓縮的參數列表來進行解析。 (不過可以再打包過程中引入gulp-ng-annotate 將推斷式注入 會轉換成 行內注入)
建議你閱讀下angular依賴注入的方法
相關文章:
1. mysql優化 - MySQL如何為配置表建立索引?2. 如何用筆記本上的apache做微信開發的服務器3. 我在網址中輸入localhost/abc.php顯示的是not found是為什么呢?4. 數據庫 - Mysql的存儲過程真的是個坑!求助下面的存儲過程哪里錯啦,實在是找不到哪里的問題了。5. 關于mysql聯合查詢一對多的顯示結果問題6. 冒昧問一下,我這php代碼哪里出錯了???7. windows誤人子弟啊8. php傳對應的id值為什么傳不了啊有木有大神會的看我下方截圖9. MySQL主鍵沖突時的更新操作和替換操作在功能上有什么差別(如圖)10. 實現bing搜索工具urlAPI提交
