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);
};
}
寻找解释。
答案 0 :(得分:2)
假设我们有控制器myCtrl
:
function myCtrl($scope) {
$scope.boo = 'boo';
}
所以要打印$scope.boo
值,我们可以写:
<div ng-controller = "myCtrl">
<pre>{{boo}}</pre>
</div>
但是我可以启动控制器:
function myCtrl($scope) {
$scope.boo = 'boo';
}
app.controller('booCntrl',myCtrl);
以HTML格式打印值:
<div ng-controller = "booCntrl">
<pre>{{boo}}</pre>
</div>
获得相同的结果。因为我使用myCtrl
方法并将其作为参数放入app.controller
第三种选择:
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选项看似简单的方法)。
希望它有所帮助