假设我在Angular.js中创建了一个带有服务和控制器的模块,我可以像这样访问控制器内部的服务:
var myapp = angular.module('my-app', []);
myapp.factory('Service', function() {
var Service = {};
Service.example = 'hello';
//etc..
return Service;
});
myapp.controller('mainController', function($scope, Service) {
$scope.greeting= Service.example;
});
在本例中,Service对象将被传递给控制器,这样构造代码不会改变代码的行为:
myapp.controller('mainController', function(Service, $scope) {
$scope.greeting= Service.example;
});
那么,Angular.js如何“知道”函数参数的含义呢?
发布于 2013-06-06 05:17:57
这是通过相当巧妙的方法annotate
(source)实现的,该方法对函数签名源进行正则表达式扫描(使用function.toString()
),并迭代地将每个函数参数推入函数$inject
数组。
手动指定$inject
数组时也会得到相同的结果,如下所示:
var MyController = function($scope, myService) {
// ...
}
// Define function dependencies
MyController.$inject = ['$scope', 'myCustomService'];
https://stackoverflow.com/questions/16949889
复制相似问题