2016-08-22 5 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' 
    } 
}); 

問題a.nameに$ scope.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を初めて使用し、それを使って遊んでいます)。それは前にエラーをスローしましたが、注入しようとした後にエラーは発生しませんが、データバインディングは機能せず、$ scope.nameではなくa.nameが表示されます – krs8888

+0

代わりに '$ scope'を意図的に使用しようとしていますか?あなたのディレクティブに隔離されたスコープを指定したにもかかわらず、あなたのリンク関数の 'scope '? –

答えて

1

指令link機能は注入されません。それらには、固定されたパラメータセットが渡されています。パラメータは、angular.js documentationに一覧表示されています。しかし、これはcontrollerの場合ではありません。これらは注入され、縮小前に注釈を付ける必要があります。あなたは、少なくとも3つの方法でそれを行うことができます。

  • あなたの例では
  • 値は、注射剤の名前の配列であることをコントローラ機能に$injectプロパティを設定するように配列構文を使用しての使用を検出しますngAnnotate
  • 注釈それに適切に注釈を付けてください。
0

リンク機能は依存性注入されません。それは定位置引数だけを使用するので、その明示的な配列命名法を使用する必要はありません。コントローラー1はいいと思います。

最後に、明快にするためにコードを書く必要があります。明示的な構文はあまりにも冗長すぎるので、ほとんどの人はng-annotateを代わりに使用します。 Ng-annotateは、コンパイル前にコードを明示的な形式に変換するコンパイルステップです。

関連する問題