比方說,我有一個名爲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 ...看看控制檯輸出。