Javascript 在AngularJS中编写控制器的不同方式是什么?

Javascript 在AngularJS中编写控制器的不同方式是什么?,javascript,performance,angularjs,Javascript,Performance,Angularjs,1-是否有多种方法使用同一版本的AngularJS编写控制器? 2-不同版本的控制器声明是否不同 到目前为止,我已经看到了两种声明控制器的方法。我不知道哪种更好,为什么 1- myAppName.controller('categoryCtrl', function ($scope, categoryData) { $scope.menu = categoryData.all; $scope.menuTypes = {'Spotlight': false, 'All': true

1-是否有多种方法使用同一版本的AngularJS编写控制器? 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);
  };
}
正在寻找解释。

[1] 假设我们有控制器
myCtrl

function myCtrl($scope) {
  $scope.boo = 'boo';
}
因此,要打印
$scope.boo
值,我们可以编写:

<div ng-controller = "myCtrl">
    <pre>{{boo}}</pre>
</div>
并以HTML格式打印值:

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


fessCntrl:{{boo}}
正如我所知,当您尝试使用动态控制器时,第一个选项很好,如下面的示例所示:请参见演示。这里的3d选项不起作用,我们无法从
app.controller
按名称加载控制器

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


希望有帮助

它们是等效的,但官方开发者指南建议不要使用全局函数语法(第二个示例)。您是否阅读过ngController文档。讨论注册模块的名称空间,我也忘记了细微差别,但有时会根据是否有无值的简单
ng app
或ng app=“moduleName”第三个示例,您是说
{boo}
如果没有
控制器名:
前缀在表达式之外,就无法单独编译?@charlietfl我发布了演示,欢迎您找到按名称调用3d选项的方法。如果您发现一个合法的问题,那就太好了……虽然在玩演示,但被注释掉了
fessmodule。$inject=['$scope']
没有看到任何行为差异。我只在页面加载中加载过一次控制器……只是curious@charlietfl我的意思是,如果您得到的对象包含控制器名称
fesscontrl
,并且我们希望使用
ng repeat
,其中每个项都是单独的作用域。只有第一个选项有效
<div ng-controller = "booCntrl">
    <pre>{{boo}}</pre>
</div>
app.controller('fessCntrl', function ($scope) {
     $scope.boo = 'boo';
});
app.$inject = ['$scope'];
<div ng-controller = "fessCntrl"> 
 <pre>fessCntrl: {{boo}}</pre>
</div>