Angular工厂功能是否需要返回某些东西?

时间:2015-12-08 06:39:30

标签: javascript angularjs

我认为这个问题的答案是"是的,"但我正在阅读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是本指南前面定义的另一项自定义服务。

2 个答案:

答案 0 :(得分:1)

我认为Factory不需要返回某些东西。 我创建了一个jsFiddle here并发现如果工厂没有返回任何内容,注入工厂的值只是undefined并且不会发生错误。

答案 1 :(得分:1)

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