cat*_*ure 7 javascript angularjs
我试图了解这个AngularJS工厂方法的返回部分的目的是什么意思?
return {
getMessages: getMessages
};
Run Code Online (Sandbox Code Playgroud)
如果我们向这个名为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
};
});
Run Code Online (Sandbox Code Playgroud)
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
};
Run Code Online (Sandbox Code Playgroud)
以上获取对getMessage函数的引用,并将其附加到getMessages返回的singleton对象内的属性.
然后,当将提供程序注入到代码中时,返回的对象就是传递的内容,使您可以访问HelloWorld.getMessages函数(以及返回对象中的任何其他属性).
所以,是的,如果你想将另一个属性(如函数)与提供者(工厂构造)相关联,则需要将其作为返回的单例对象的属性包含在内:
return {
getAnotherMessage: function() { ... },
getMessages: getMessages
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11034 次 |
| 最近记录: |