2013-04-08 4 views
26

ディレクティブのリンク関数のパラメータはDIに依存していますか?で

module.directive 'name', -> 
    (scope, element, attr) -> 
    # Whatever implemenation 

リンク機能のscopeelementattrsパラメータは、名前推論依存インジェクションに依存しているのですか?はいの場合、どうすればそれらを縮小証明することができますか?

それとも、彼らは何が彼らに渡されたの良い古い議論の順序に依存していますか?

答えて

42

いいえ、リンク関数には、事前定義されたパラメータのセットがあります。

function link($scope, $element, attrs, ctrl) { 
    //Your method 
} 

彼らは要素

  • required
  • で使用される任意のコントローラを設定する属性要素
  • 要素自体の

    1. 範囲(ラップjqueryの/ミニjqueryの)
    2. です
  • +1

    縮小についてはどうですか? – Clev3r

    +11

    リンク関数は、縮小配列構文を必要としません。 –

    +0

    コントローラの部分について詳しく教えてください。それは各コントローラの値を持つオブジェクトですか? – heneryville

    21

    O(私が行ったように)、ディレクティブでDIを使用する代わりに、リンク機能のディレクティブの工場機能に注入される引数を置く:

    module.directive('name', function($timeout) { 
        return function(scope, element, attrs) { 
         ... 
        }; 
    }); 
    

    縮小を可能にするため、あなたのような配列で関数の引数を置きますコントローラの操作を行います。

    module.directive('name', ['$timeout', function($timeout) { 
        return function(scope, element, attrs) { 
         ... 
        }; 
    }]); 
    

    the docs現在の時刻例を参照してください。

    $timeoutサービスを送信するデモ用の編集:See here関数ではなくディレクティブ(例:return {restrict: 'E', link: function() {...}})オブジェクトを返すときも同じことができます。

    関連する問題