6

AngularJS by Brad Greenから、このスニペットを考えてみましょう。なぜAngularJSで配列を渡すのですか?

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

directives.directive('butterbar', ['$rootScope', 
    function ($rootScope) { 
     return { 
      link: function (scope, element, attrs) { 
       element.addClass('hide'); 

       $rootScope.$on('$routeChangeStart', function() { 
        element.removeClass('hide'); 
       }); 

       $rootScope.$on('$routeChangeSuccess', function() { 
        element.addClass('hide'); 
       }); 
      } 
     }; 
    }] 
); 

directives.directive('focus', function() { 
    return { 
     link: function (scope, element, attrs) { 
      element[0].focus(); 
     } 
    }; 
}); 

「butterbar」ディレクティブのために、彼は最初の項目は、依存関係名"$rootScope"と単なる文字列で、2番目の項目が関数である配列を渡すことに注意してください。この関数は$rootScopeへの依存関係を宣言します。なぜここで自分たちを繰り返すのですか?それだけでこれを行うことが可能であるように思われる場合、特に:

directives.directive('butterbar', function ($rootScope) { 
    return { 
     link: function (scope, element, attrs) { 
      element.addClass('hide'); 

      $rootScope.$on('$routeChangeStart', function() { 
       element.removeClass('hide'); 
      }); 

      $rootScope.$on('$routeChangeSuccess', function() { 
       element.addClass('hide'); 
      }); 
     } 
    }; 
}); 

私は、文字列であること、依存関係の名前は重要性のいくつかの並べ替えを持っていることを推測しています。誰が私がなぜディレクティブのためだけでなく、本の中でこれを行うのか教えてもらえますか?

+1

縮小VS依存性の注入。 – elclanrs

+0

明快さの4つの単語:) – Chev

答えて

13

はJavaScriptが縮小される場合には、パラメータの名前は、多くの場合、aほど短くなものに変更されます。これは依存性注入を破ります。あなたは、配列を使用している場合

、角度を注入するために何を知っていて、どこを注入します。配列の文字列要素は縮小によって変更されないため、配列と一緒に動作します。この例では

コードは次のようなものに見えるかもしれません縮小さ
app.controller('test', function($scope, $someProvider) { 
}); 

app.controller('test',function(a,b){}); 

これとのに対し角度は、注入するのか分からないので、これは動作しなくなります

app.controller('test', ['$scope', '$someProvider', function($scope, $someProvider) { 
}]); 

縮小されたコードは次のようになります。

app.controller('test',['$scope','$someProvider',function(a,b) {}]); 

角度は、まだ注入するために知っているので、これはまだ動作します。 Angular tutorialの縮小に関する注記を参照してください。

通常、私は生産準備が整ったばかりのアレイスタイルを追加します。

+0

恐ろしい。説明ありがとう。配列の依存関係の順序は、関数の引数の順序と一致しなければならないのでしょうか?私はそう思います、はい? – Chev

+0

はい、あります。間違った順序でそれらがある場合、依存関係は不一致になります。 –

+0

パーフェクト。私はすぐにそれは私をすることができますよう受け入れます:)これの – Chev

関連する問題