AngularJS Developer Guide states:
The service factory function generates the single object or function that represents the service to the rest of the application.
然后给出以下示例:
batchModule.factory('routeTemplateMonitor', ['$route', 'batchLog', '$rootScope',
function($route, batchLog, $rootScope) {
$rootScope.$on('$routeChangeSuccess', function() {
batchLog($route.current ? $route.current.template : null);
});
}]);
这里的工厂功能是:
function($route, batchLog, $rootScope) { /* ... */ }
但是这个函数的主体似乎既不返回函数也不返回对象,这似乎与工厂函数的给定定义相矛盾。给定的工厂函数不应该以return语句结束并返回函数或对象以满足工厂函数的定义吗?有人可以解释我哪里出错吗?
感谢。
答案 0 :(得分:0)
在角度工厂和服务中是单例,即只存在一个实例。 Struct<T>
返回该对象,如果是Factory
,则在场景后面进行实例化。
您必须执行类似
的操作Service
答案 1 :(得分:0)
进一步形成相同的文档:
请注意,您没有注册服务实例,而是注册工厂函数,这会在调用时创建此实例。
你可以这样做,但注入的工厂实例将是未定义的(没有返回语句),所以没有多大意义。
该部分文档的标题命名为&#34;依赖关系&#34;,因此代码示例显示了如何将工厂batchLog
注入routeTemplateMonitor
工厂。工厂内部在这里并不重要。
routeTemplateMonitor
内容的最佳位置位于run blocks IMO。
答案 2 :(得分:0)
您可以返回任何您想要的东西,但在工厂中,当您将工厂注入某处时,该功能仅运行一次。缺少显式return语句的函数将返回undefined,
你可以返回一个函数并使用它,你可以使用方法返回一个对象并使用它,但重要的是它只运行一次。