[英]Returning function from AngularJS factory
我試圖了解這個AngularJS工廠方法的返回部分的目的是什么意思?
return {
getMessages: getMessages
};
如果我們向這個名為getAnotherMessage()的工廠添加了一個新方法會發生什么,我們是否需要更新這個返回段?
myModule.factory('HelloWorld', function($q, $timeout) {
var getMessages = function() {
var deferred = $q.defer();
$timeout(function() {
deferred.resolve(['Hello', 'world!']);
}, 2000);
return deferred.promise;
};
return {
getMessages: getMessages
};
});
factory
是一個提供者構造函數:
factory(fn) - 注冊一個服務工廠函數fn,它將包裝在一個服務提供者對象中,其$ get屬性將包含給定的工廠函數。
因此,當Angular首次加載工廠時,它會執行傳入的函數並存儲作為提供程序返回的任何內容。
換句話說,以下是在引導期間運行一次,並且只運行一次:
var getMessages = function() {
var deferred = $q.defer();
$timeout(function() {
deferred.resolve(['Hello', 'world!']);
}, 2000);
return deferred.promise;
};
return {
getMessages: getMessages
};
上面獲取了對getMessage
函數的引用,並將其附加到返回的singleton對象中的屬性getMessages
。
然后,當將提供程序注入到代碼中時,返回的對象就是傳遞的內容,使您可以訪問HelloWorld.getMessages函數(以及返回對象中的任何其他屬性)。
所以,是的,如果你想將另一個屬性(如函數)與提供者(工廠構造)相關聯,則需要將其作為返回的單例對象的屬性包含在內:
return {
getAnotherMessage: function() { ... },
getMessages: getMessages
};
您還可以先聲明一個空對象,然后將函數添加到對象中
最后返回對象。
myModule.factory('HelloWorld', function($q, $timeout) {
var myobject = {};
myobject.getMessages = function() { ... };
myobject.getAnotherMessages = function() { ... };
return myobject;
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.