angularjs中的问题
1.依赖注入
原理:通过构造函数的参数名称来推断依赖服务名称的,通过toString来找到这个function对应的字符串,然后用正则匹配出其中的参数项(依赖项),再去依赖映射表中取出对应的依赖,实例化之后传入函数。
原理的代码表示过程请参考:http://www.tuicool.com/articles/ymmq2mf
inject.register('el', animalBox); //注册依赖名称和依赖项
inject.register('ajax', httpRequest);
render = inject.resolve(render); //向函数添加依赖注入 injector
render();
问题:injector假设参数的名字就是依赖的名字,然后去查找依赖项,但是如果对代码进行了压缩,参数会被重命名,就无法查找到依赖项。
所以使用下面两种方式注入依赖是安全的:
数组注释法:
myApp.controller('myCtrl', ['$scope', '$http', function($scope, $http){
...
}]);
显式 $inject,调用$inject属性,
myApp.controller('myCtrl', myCtrl);
function myCtrl = ($scope, $http){
...
}
myCtrl.$inject = ['$scope', '$http'];