控制器中的Angularjs$范围
我要说的是,我在Angularjs是一个非常新手 在编写控制器时,我看到我可以使用控制器中的Angularjs$范围,angularjs,angularjs-scope,Angularjs,Angularjs Scope,我要说的是,我在Angularjs是一个非常新手 在编写控制器时,我看到我可以使用 controller('MyController', ['$scope', function($scope) {}]) 或 两者的区别是什么 这主要用于缩小。当你缩小js controller('MyController',函数($scope){}) 将转换为 controller('MyController', function(a) {}) function (a){ a= 123; } 它会给出
controller('MyController', ['$scope', function($scope) {}])
或
两者的区别是什么 这主要用于缩小。当你缩小js
controller('MyController',函数($scope){})
将转换为
controller('MyController', function(a) {})
function (a){
a= 123;
}
它会给出一个错误,因为a是未定义的。当您将依赖项提供为
controller('MyController', ['$scope', function($scope) {}])
它将映射到$scope,工作正常。这主要用于缩小。当你缩小js
controller('MyController',函数($scope){})
将转换为
controller('MyController', function(a) {})
function (a){
a= 123;
}
它会给出一个错误,因为a是未定义的。当您将依赖项提供为
controller('MyController', ['$scope', function($scope) {}])
它将映射到$scope,并且工作正常。两者都是相同的
当javascript代码缩小时,函数中的所有局部变量都将更改为较小的变量以减小大小。比如说
function (largevariablename){
largevariablename = 123;
}
将转换为
controller('MyController', function(a) {})
function (a){
a= 123;
}
但在角度的情况下,如果$scope缩小为s。然后依赖项注入搜索s失败。因此,angular injector将注入它在数组中找到的字符串值,并注入它,而不是以下面的方式定义它的局部变量
controller('MyController', ['$scope', function($scope) {}])
因此,如果您的代码不打算缩小,您可以使用简单版本
控制器('MyController',函数($scope){})两者都是相同的
当javascript代码缩小时,函数中的所有局部变量都将更改为较小的变量以减小大小。比如说
function (largevariablename){
largevariablename = 123;
}
将转换为
controller('MyController', function(a) {})
function (a){
a= 123;
}
但在角度的情况下,如果$scope缩小为s。然后依赖项注入搜索s失败。因此,angular injector将注入它在数组中找到的字符串值,并注入它,而不是以下面的方式定义它的局部变量
controller('MyController', ['$scope', function($scope) {}])
因此,如果您的代码不打算缩小,您可以使用简单版本
控制器('MyController',function($scope){})事实上,您不应该直接使用回调(匿名函数)来定义控制器 您应该使用单独的函数和$inject模块来手动识别依赖项
controller('MyController', MyController);
MyController.$inject = ['$scope'];
function MyController($scope){
};
为什么使用命名函数
这将生成更可读的代码,更易于调试,并减少
嵌套回调代码的数量
为什么要使用$inject
此技术反映了ng annotate使用的技术,我
建议自动创建小型化保险柜
依赖关系。如果ng annotate检测到已进行注入,
它不会复制它
此外,这还可以保护您的依赖关系不受攻击
参数可能损坏时的缩小问题
这是从众所周知的中提取出来的。事实上,您不应该直接使用回调(匿名函数)来定义控制器 您应该使用单独的函数和$inject模块来手动识别依赖项
controller('MyController', MyController);
MyController.$inject = ['$scope'];
function MyController($scope){
};
为什么使用命名函数
这将生成更可读的代码,更易于调试,并减少
嵌套回调代码的数量
为什么要使用$inject
此技术反映了ng annotate使用的技术,我
建议自动创建小型化保险柜
依赖关系。如果ng annotate检测到已进行注入,
它不会复制它
此外,这还可以保护您的依赖关系不受攻击
参数可能损坏时的缩小问题
这是从众所周知的中提取的,两者的目的相同。如果混淆了代码,后者可能会失败。两者的用途相同。如果混淆了代码,后者可能会失败。