1

シードアプリはコントローラーを参照するルートを使用し、コントローラーは次のように定義されます。

function MyCtrl1() {} 
MyCtrl1.$inject = [];

インジェクションを示すより良い例(つまり)を探していますか?おそらくHTTPがスコープを取得して更新しますか?

ありがとう。

4

1 に答える 1

1

何が欲しいのか正確にはわかりませんが、もっと複雑な例を示します。

コントローラ:

function MyCtrl1 ( $scope, $http ) {
  $http.get( '/some/location' ).success( function ( data ) {
    $scope.items = data;
  });
}
MyCtrl1.$inject = [ '$http' ];

意見:

<div ng-controller="MyCtrl1">
  <ul>
    <li ng-repeat="item in items">{{item.name}}</li>
  </ul>
</div>

解説:

実際のシナリオでは、$ http呼び出しは独自のサービスで行われ、代わりにコントローラーに注入されます。また、グローバル空間でコントローラーを定義しないことをお勧めします。同じコントローラーを定義するためのより良い方法は次のようになります。

angular.module('myApp', [])
.controller( 'MyCtrl', [ '$http', function MyCtrl1 ( $scope, $http ) {
  $http.get( '/some/location' ).success( function ( data ) {
    $scope.items = data;
  });
}]);

アップデート:

コントローラーはスコープなしでは役に立たず、実際には何もできませんでした。そのため、Angularはすべてのコントローラーに$scopeを自動的に挿入します。他のすべてのサービスは、注入するように要求する必要があります。と配列のMyCtrl1.$inject構文はどちらも、縮小後も機能を維持するためにのみ必要です。私のコードでサンプルファイルを作成し、その$inject行を削除しても、引き続き機能します。ただし、Javascriptを縮小すると、変数名が減るので、重要な情報を文字列に入れます。

このチュートリアルのように、チュートリアルを実行するだけでなく、 AngularJSYouTubeチャンネルのいくつかのビデオを視聴することをお勧めします。

于 2013-01-07T19:31:20.313 に答える