26

の:

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

リンク関数のとパラメータはscope、名前から推測される Dependency-Injection に依存していますか? はいの場合、どうすればそれらを縮小証明にできますか?elementattrs

それとも、それらに渡されるものについて、古き良き引数の順序に依存していますか?

4

2 に答える 2

44

いいえ、リンク機能には事前定義された一連のパラメーターがあります。

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

彼らです

  1. 要素の範囲
  2. 要素自体 (jquery/mini jquery ラップ)
  3. 要素の属性セット
  4. で使用されるすべてのコントローラーrequired
于 2013-04-08T04:18:35.337 に答える
22

ディレクティブで DI を使用する場合 (私が行ったように)、リンク関数の代わりにディレクティブ ファクトリ関数に注入する引数を入れます。

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

縮小を可能にするには、コントローラーの場合と同様に、関数の引数を配列に入れます。

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

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

編集:サービスを挿入するデモについては、こちらを参照してください$timeoutreturn {restrict: 'E', link: function() {...}}関数の代わりにディレクティブ (例: ) オブジェクトを返す場合も同じことができます。

于 2013-05-10T01:24:28.350 に答える