在AngularJS中编写控制器有哪些不同的方法?

时间:2013-11-04 05:53:30

标签: javascript performance 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 个答案:

答案 0 :(得分: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>

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

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

希望它有所帮助