4

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

寻找解释。

4

1 回答 1

2

[ 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>

据我所知,当您尝试使用如下示例中的动态控制器时,第一个选项很好:请参阅 Demo Fiddle。3d 选项在这里不起作用,我们无法从app.controller.

但在“根”控制器的情况下,我更喜欢 3d 选项,只是为了代码清晰。(1-2 个选项看起来很简单)。

希望能帮助到你

于 2013-11-04T06:16:57.610 回答