哪个Angular提供程序的函数语法?

时间:2014-11-21 03:16:33

标签: angularjs

假设我有一个名为lookup的提供商。它的使用方式如下:

.controller('lookupCtrl', ['lookup', function(lookup) {
    this.values = lookup('monkey');
}]);

什么是lookup?是service()吗?是factory()吗?一个value()

2 个答案:

答案 0 :(得分:0)

在这种特殊情况下,它可以是任何一种。

如果您创建了一个普通的,普通的JavaScript对象,然后使用Value提供程序,将对象命名为“lookup”,则

lookup可以是一个值。即使值通常是一个简单的类型,它也可以是一个对象,这样就可以了。

如果您使用工厂提供程序,

lookup也可以是工厂,在这种情况下,您指定一个返回对象的函数。您返回的对象与在上面请求“查找”

的任何例程中注入的对象完全相同

最后,查找也可以是角度服务。如果您这样做,服务提供者将指定一个返回“newable”对象的函数。因此,您返回的内容将是Angular将“new”的函数,并且其结果将传递给请求“查找”实例的任何人。请注意,即使在这种情况下,Angular也只会一次实例化您的服务。工厂和服务之间的区别是微妙的。想象一个服务返回一个角度实例化一次的“类”并重用那个实例。并且工厂使用您返回角度的对象。

答案 1 :(得分:0)

答案是" 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 ...查看控制台输出。