加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – Angular中用于控制器,服务和其他语言的不同语法

发布时间:2020-12-17 07:13:52 所属栏目:安全 来源:网络整理
导读:有什么区别 app.controller("MyCtrl",function($scope,$http){ //...}); 和 app.controller("MyCtrl",["$scope","$http",$http){ //...}]); 即使两者都给出相同的结果而且没有错误.事实上,第一个使代码干净,而不是写.在服务,指令中也是如此.有人可以给我一个
有什么区别

app.controller("MyCtrl",function($scope,$http){
    //...
});

app.controller("MyCtrl",["$scope","$http",$http){
    //...
}]);

即使两者都给出相同的结果而且没有错误.事实上,第一个使代码干净,而不是写.在服务,指令中也是如此.有人可以给我一个关于它的小简介.

解决方法

没有功能差异.使用.controller(‘ctrl’,[‘$scope’,函数($scope){…}是为了允许正确读取缩小版本.

关于缩小的注释 – AngularJS

Since Angular infers the controller’s dependencies from the names of arguments to the controller’s constructor function,if you were to minify the JavaScript code for MyCtrl controller,all of its function arguments would be minified as well,and the dependency injector would not be able to identify services correctly.

我们可以通过使用依赖项的名称来注释函数来克服这个问题,这些依赖项的名称是字符串,不会被缩小.有两种方法可以提供这些注入注释:

>在控制器函数上创建一个$inject属性,该函数包含一个字符串数组.数组中的每个字符串都是要为相应参数注入的服务的名称:

function MyCtrl($scope,$http) {...}
MyCtrl.$inject = ['$scope','$http'];
app.controller('MyCtrl',MyCtrl);

>使用内联注释,而不是仅提供函数,而是提供数组.此数组包含服务名称列表,后跟函数本身:

function MyCtrl($scope,$http) {...}
app.controller('MyCtrl',['$scope','$http',MyCtrl]);

这两种方法都适用于Angular可以注入的任何函数,因此由项目的样式指南决定使用哪一个.

使用第二种方法时,通常在注册控制器时将构造函数内联作为匿名函数提供:

app.controller('MyCtrl',$http) {...}]);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读