4

1-同じバージョンの AngularJS を使用してコントローラーを作成する方法は複数ありますか? 2-コントローラーの宣言はAngularのバージョンごとに異なりますか?」

これまで、コントローラーを宣言する 2 つの方法を見てきました。どちらが優れているのか、その理由はわかりません。

1-

myAppName.controller('categoryCtrl', function ($scope, categoryData) {
    $scope.menu = categoryData.all;
    $scope.menuTypes = {'Spotlight': false, 'All': true};

});

2

function myCtrl($scope) {
  $scope.master = {};

  $scope.update = function(user) {
    $scope.master = angular.copy(user);
  };

  $scope.reset = function() {
    $scope.user = angular.copy($scope.master);
  };
}

説明を探しています。

4

1 に答える 1

2

[ 1 ]

controller があるとしましょうmyCtrl:

function myCtrl($scope) {
  $scope.boo = 'boo';
}

したがって、$scope.boo値を出力するには、次のように記述できます。

<div ng-controller = "myCtrl">
    <pre>{{boo}}</pre>
</div>

[ 2 ]

ただし、次のようにコントローラーを開始できます。

 function myCtrl($scope) {
  $scope.boo = 'boo';
 }

app.controller('booCntrl',myCtrl);

HTML で値を出力します。

<div ng-controller = "booCntrl">
    <pre>{{boo}}</pre>
</div>

同じ結果が得られます。メソッドを使用myCtrlして引数として入れている ためapp.controller

[ 3 ]

3 番目のオプション:

app.controller('fessCntrl', function ($scope) {
     $scope.boo = 'boo';
});
app.$inject = ['$scope'];

そして印刷:

<div ng-controller = "fessCntrl"> 
 <pre>fessCntrl: {{boo}}</pre>
</div>

私が知っているように、次の例のように動的コントローラーを使用しようとする場合、最初のオプションが適しています: Demo を参照してくださいFiddle。3d オプションはここでは機能しません。 から名前でコントローラーをロードすることはできませんapp.controller

ただし、コードを明確にするためだけに、「ルート」コントローラーの場合は 3d オプションを好みます。(1〜2のオプションは単純な方法のようです)。

それが役に立てば幸い

于 2013-11-04T06:16:57.610 に答える