我决定看看Angularjs。在教程的第一步后,我尝试重命名$scope
变量。但它打破了所有的事情。
phonecatApp.controller('PhoneListCtrl', function($scope) { ... }); // this works
phonecatApp.controller('PhoneListCtrl', function(foo) { ... }); // this does not works
为什么呢?它不仅仅是传递给回调的局部变量吗?为什么必须有特定的名称?
答案 0 :(得分:2)
注入变量。这意味着Angular实际上会从它的名称中推断出它的价值。这就是" $ scope"会工作的。
这适用于控制器,服务等的任何参数。例如,如果你定义自己的服务,你也会注入它:
// You will not get instance of your service directly. Instead, just
// put it right into function parameter list, and it will get injected
// by Angular for you.
phonecatApp.controller('PhoneListCtrl', function ($scope, SomeService) {
});
// Declaration of your custom service.
phonecatApp.factory('SomeService', function() {
});
您将在this article中的Angular中找到有关DI(依赖注入)的更多内容。
答案 1 :(得分:0)
你可以这样做:
phonecatApp.controller('PhoneListCtrl', ['$scope', function(foo) { ... }]);
这是有效的,并且是一种很好的做法(使用['' ...]不要将$ scope重命名为foo :-))如果你以后想要缩小你的js文件。