Angular工厂函数需要返回一些东西吗

Does an Angular factory function need to return something?

本文关键字:返回 工厂 函数 Angular      更新时间:2023-09-26

我认为这个问题的答案是"是的",但我正在阅读Angular开发人员指南(https://docs.angularjs.org/guide/services)偶然发现了这个使用factory方法注册自定义服务的示例代码:

batchModule.factory('routeTemplateMonitor', ['$route', 'batchLog', '$rootScope', 
function($route, batchLog, $rootScope) {
  $rootScope.$on('$routeChangeSuccess', function() {
    batchLog($route.current ? $route.current.template : null);
  });
}]);

正如您所看到的,本例中的工厂函数没有返回任何内容。这有效吗?如果有效,$injector服务将如何处理这种情况?

PS:batchLog是本指南前面定义的另一个自定义服务。

您不必,即使在大多数情况下,也需要。如果未指定任何内容,则所有javascript函数都返回undefined,因此这不是错误。

我认为Factory不需要返回一些东西。我在这里创建了一个jsFiddle,发现如果工厂没有返回任何东西,那么注入的工厂的值只是undefined,不会发生错误。