javascript – 在AngularJS中编写控制器的方法有哪些?

1-使用相同版本的AngularJS有多种编写控制器的方法吗?

2-对于不同版本的Angular,控制器声明是否不同?“

到目前为止,我已经看到了两种声明控制器的方法.我不知道哪一个更好,为什么.

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);
  };
}

寻找解释.

最佳答案 [1]

让我们说我们有控制器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]

第三种选择:

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

并打印:

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

我知道第一个选项是好的,当您尝试使用动态控制器时,如下面的示例:请参阅演示Fiddle. 3d选项在此处不起作用,我们无法从app.controller按名称加载控制器.

但是,对于代码清晰度,我更喜欢“root”控制器的3d选项. (1-2选项看似简单的方法).

希望能帮助到你

点赞