比方说,我有一个名为lookup
的提供商。它的用法是这样的:哪个函数语法的角色提供者?
.controller('lookupCtrl', ['lookup', function(lookup) {
this.values = lookup('monkey');
}]);
什么是lookup
?这是一个service()
?这是一个factory()
? A value()
?
比方说,我有一个名为lookup
的提供商。它的用法是这样的:哪个函数语法的角色提供者?
.controller('lookupCtrl', ['lookup', function(lookup) {
this.values = lookup('monkey');
}]);
什么是lookup
?这是一个service()
?这是一个factory()
? A value()
?
在这种特殊情况下,它可以是其中的任何一种。
如果您创建了一个普通的普通的JavaScript对象,然后使用值提供程序命名对象“查找”,则查找可能是一个值。尽管一个值通常是一个简单的类型,但它可能是一个对象,而这会起作用。
如果您使用工厂提供程序,查找也可能是工厂,在这种情况下,您可以指定一个返回对象的函数。您返回的对象与上述请求“查找”的例程中注入的完全相同的对象
最后,查找也可以是角度服务。如果你这样做了,那么服务提供者会指定一个返回一个“新”对象的函数。所以你返回的东西将是Angular将会“新”的一个函数,并且这个函数的结果将被传递给请求“查找”实例的任何人。请注意,即使在这种情况下,Angular也只有一次实例化您的服务。工厂和服务之间的区别是微妙的。想想一个服务返回一个角度实例化一次的“类”并重用该实例。并且工厂使用您返回角度的对象。
答案是“d:以上所有的”
作为服务:
.service('myService', function(){
return function(someParam){
console.log(someParam);
};
});
作为工厂:
.factory('myFactory', function(){
return function(someParam){
console.log(someParam);
};
});
作为值:
.value('myValue', function(){
console.log(arguments);
});
这是一个Plunkr ...看看控制台输出。