javascript - angularjs 控制器寫法
問題描述
angular.module(’myApp’,[]).controller(’DemoController’,[’$rootScope’,’$scope’,’$http’,function($rootScope,$scope,$http){}])angular.module(’myApp’,[]).controller(’DemoController’,function($rootScope,$scope,$http){})
這兩種有什么區(qū)別?
問題解答
回答1:后面 function 傳入的參數(shù)無順序與數(shù)量要求.
第一種將傳入 function 的變量用字符串 ’$rootScope’,’$scope’,’$http’ 的方式指明, 第二種只是簡單的變量名.
因?yàn)?js 壓縮工具會將 function($rootScope,$scope,$http) 里的 $rootScope,$scope,$http 混淆壓縮掉, 比如換成了 function(a,b,c).
代碼混淆壓縮后 angular 不知道向 function 里傳入的參數(shù)(或依賴)是啥, 導(dǎo)入壓縮后不能運(yùn)行.
回答2:這是angular依賴注入的兩種方式:第一個(gè)是行內(nèi)注入,第二個(gè)是推斷式注入 (還有一種是顯示注入)區(qū)別是行內(nèi)注入:允許我們在函數(shù)定義時(shí)從行內(nèi)將參數(shù)傳入。此外,它可以避免在定義過程中使用臨時(shí)變量。推斷式注入:如果沒有明確的聲明, Angular會假定參數(shù)名稱就是依賴的名稱,但這個(gè)過程只適用于未經(jīng)過壓縮和混淆的代碼,因?yàn)锳ngular需要原始未經(jīng)壓縮的參數(shù)列表來進(jìn)行解析。 (不過可以再打包過程中引入gulp-ng-annotate 將推斷式注入 會轉(zhuǎn)換成 行內(nèi)注入)
建議你閱讀下angular依賴注入的方法
相關(guān)文章:
1. node.js - nodejs,express搭建,為什么ejs模板被解析成pre了?2. javascript - postcss-loader在webpack2的使用.3. angular.js - js 點(diǎn)擊事件onclick=“”,引號內(nèi)的函數(shù)名字 可以為 變量嗎4. css3 實(shí)現(xiàn)一個(gè)線性漸變出現(xiàn)的問題?5. angular.js - Angular中關(guān)于控制器編寫方式的問題6. android - 如何使用view group的bitmap做一個(gè)倒影效果,同時(shí)忽略scale的view7. linux - 無法使用ifconfig來配置ip信息8. mysql - 關(guān)聯(lián)數(shù)據(jù)表的更新問題9. 求救一下,用新版的phpstudy,數(shù)據(jù)庫過段時(shí)間會消失是什么情況?10. mysql - mybatis 查詢 統(tǒng)計(jì)某個(gè)列數(shù)量 ,根據(jù)一個(gè)列,分組查詢,在xml文件如何接收
