Javascript 无法理解Angular JS中的控制器功能
我是Angular JS的新手。我试图通过了解控制器的功能来获得一些深入的知识 我遇到了以下代码片段Javascript 无法理解Angular JS中的控制器功能,javascript,angularjs,dependencies,Javascript,Angularjs,Dependencies,我是Angular JS的新手。我试图通过了解控制器的功能来获得一些深入的知识 我遇到了以下代码片段 var App = angular.module('clientApp', ['ngResource', 'App.filters']); App.controller('ClientCtrl', ['$scope',function ($scope) { }]); 如果我写下: var App = angular.module('clientApp', ['ngResource'
var App = angular.module('clientApp', ['ngResource', 'App.filters']);
App.controller('ClientCtrl', ['$scope',function ($scope) {
}]);
如果我写下:
var App = angular.module('clientApp', ['ngResource', 'App.filters']);
App.controller('ClientCtrl', function ($scope) {
});
我的理解是:
我知道方括号中写的东西是对特定模块或控制器的依赖关系。但是,我不明白为什么要写
"['$scope',function($scope)"
而不是
App.controller(controllername,function($scope){
});
我们将非常感谢您的帮助 它允许缩小AngularJS代码。AngularJS使用参数名将值注入控制器函数。在JavaScript缩小过程中,这些参数被重命名为较短的字符串。通过告诉使用字符串数组将哪些参数注入函数,AngularJS在重命名参数时仍然可以注入正确的值。实际上应该按照以下方式编写: 首先,我们创建并命名一个名为“
app
”的模块。我们还创建了一个名为“SomeController
”的控制器
angular
.module('app')
.controller('SomeController', SomeController);
现在,我们将所需的依赖项注入控制器
SomeController.$inject = ['dataservice', 'logger'];
现在我们为控制器创建corresponding函数。注意这些依赖项是如何包含的吗
function SomeController(dataservice, logger) {
var vm = this;
vm.avengers = [];
activate();
function activate() {
return getAvengers().then(function() {
logger.info('Activated Avengers View');
});
}
function getAvengers() {
return dataservice.getAvengers()
.then(function(data) {
vm.avengers = data;
return vm.avengers;
});
}
}
你不必这样做,事实上,我认为这使得角度代码更难扫描/读取。我不介意libs和其他黑匣子使用它(至少),但我不认为(希望)微小的应用程序文件会减慢启动速度,因为它们没有缩小…你试过我的答案吗?