2016-08-22 56 views
-1

我有一個簡單angularjs指令,當我再壓縮文件,因爲變量名稱更改如何正確縮小angularJS文件

var app= angular.module('app',[]); 

app.directive('directive',function(){ 
    return { 
     restrict: 'EA', 
     scope: {}, 
     replace: true, 
     link: function($scope, element, attributes){ 
      $scope.name="test-test"; 
     , 
     controller: function($scope,$attrs,$http){ 

     }, 
     templateUrl: 'directives/app/app.tpl.html' 
    } 
}); 

問題是$ scope.name變成a.name和我得到錯誤角度無法識別它。 我試圖通過嘗試類似

link: ['$scope',function($scope, element, attributes){ 
      $scope.name="test-test"; 
}], 
controller: ['$scope','$attrs','$http',function($scope,$attrs,$http){ 

}], 

但精縮時,我仍然得到a.name的同樣的錯誤注入$範圍。

+0

鏈接功能不使用依賴注入。這實際上是你正在測試的確切代碼嗎?你的原始代碼的鏈接功能應該工作正常,你的控制器應該拋出一個關於未知供應商的錯誤 – rob

+0

是的,這是確切的代碼(我是angularJS的新手,並與它一起玩耍)。它確實拋出錯誤之前,但試圖注入後它不會拋出任何錯誤,但數據綁定不起作用,我看到a.name而不是$ scope.name – krs8888

+0

你是故意試圖使用'$ scope'來代替即使你在你的指令中指定了一個獨立的範圍,你的鏈接函數中的「範圍」是什麼? –

回答

1

指令link函數未被注入。他們通過了在angular.js documentation中列出並全面描述的一組固定參數。但是,controller並非如此。這些被注入並且應該在縮小之前註釋。你可以這樣做至少3種方式:使用數組語法就像在你的榜樣

  • 與價值是注射劑的名稱的陣列設置在控制器功能$inject財產

    • 標註與ngAnnotate這將檢測用途的角度注射和適當的註釋
  • 0

    鏈接函數不依賴注入。它僅使用位置參數,因此您不必使用顯式數組命名。控制者之一我認爲很好。

    最後,請記住,您必須編寫清晰的代碼。顯式語法有點太冗長,這就是爲什麼大多數人選擇使用ng-annotate來代替。 Ng-annotate是一個編譯步驟,它將在縮小之前將代碼轉換爲顯式形式。