2014-11-21 54 views
1

比方说,我有一个名为lookup的提供商。它的用法是这样的:哪个函数语法的角色提供者?

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

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

回答

0

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

如果您创建了一个普通的普通的JavaScript对象,然后使用值提供程序命名对象“查找”,则查找可能是一个值。尽管一个值通常是一个简单的类型,但它可能是一个对象,而这会起作用。

如果您使用工厂提供程序,查找也可能是工厂,在这种情况下,您可以指定一个返回对象的函数。您返回的对象与上述请求“查找”的例程中注入的完全相同的对象

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

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 ...看看控制台输出。

相关问题