gpt4 book ai didi

javascript - 从 AngularJS 工厂返回函数

转载 作者:数据小太阳 更新时间:2023-10-29 04:42:31 25 4
gpt4 key购买 nike

我想了解这个 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 是一个 provider构造函数:

factory(fn) - registers a service factory function, fn, that will be wrapped in a service provider object, whose $get property will contain the given factory function.

因此,当 Angular 首次加载工厂时,它会执行传入的函数并将返回的任何内容存储为提供者。

换句话说,以下运行一次,并且只在引导期间运行一次:

var getMessages = function() {
var deferred = $q.defer();

$timeout(function() {
deferred.resolve(['Hello', 'world!']);
}, 2000);

return deferred.promise;
};

return {
getMessages: getMessages
};

上面获取了对 getMessage 函数的引用,并将其附加到返回的单例对象内的属性 getMessages

当提供程序随后被注入(inject)到您的代码中时,返回的对象就是传入的内容,使您可以访问 HelloWorld.getMessages 函数(以及返回对象中的任何其他属性)。

所以,是的,如果您想将另一个属性(例如函数)与提供者(工厂构造的)相关联,您需要将其作为返回的单例对象的属性包含在内:

return {
getAnotherMessage: function() { ... },
getMessages: getMessages
};

关于javascript - 从 AngularJS 工厂返回函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21223493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com