1

AngularJSのドキュメントで、インジェクターについてこれを見ました:

// You write functions such as this one.
function doSomething(serviceA, serviceB) {
  // do something here.
}

// Angular provides the injector for your application
var $injector = ...;

///////////////////////////////////////////////
// the old-school way of getting dependencies.
var serviceA = $injector.get('serviceA');
var serviceB = $injector.get('serviceB');

// now call the function
doSomething(serviceA, serviceB);

///////////////////////////////////////////////
// the cool way of getting dependencies.
// the $injector will supply the arguments to the function automatically
$injector.invoke(doSomething); // This is how the framework calls your functions

良い感じ。しかし、私はそれを取得しません。インジェクターが依存関係を探す最後の行では、グローバル変数 serviceA、serviceB を持っているのとまったく同じではありませんか? つまり、次のように書き直すとします。

var serviceA, serviceB; 
function doSomething() {
   // access serviceA, serviceB
}

インジェクターにそれをさせる利点は何ですか?つまり、彼が引数に適したオブジェクトを魔法のように見つけることができれば、それらがグローバル変数である場合と同じように簡単に見つけることができるということではないでしょうか?

私の質問が明確であることを願っています...

4

1 に答える 1

-1

ところで、本当に $scope よりも低いレベルで行う必要があることをしている場合、Angular は次のことをカバーしています。

http://docs.angularjs.org/api/ng.$ro​​otScope

$rootScope のドキュメントは少し軽いですが、一般的に言えば、通常の $scope と同じように挿入して使用します。これは、現在のアプリの共有ルート スコープです。

Window スコープを使用する唯一の理由は、複数の Angular アプリ間で通信することです。それでも...あなたはそれを手に入れました.Angularはあなたをカバーしています:

http://docs.angularjs.org/api/ng.$window

于 2013-05-30T15:21:51.080 に答える