我认为这个问题的答案是"是的,"但我正在阅读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
是本指南前面定义的另一项自定义服务。
答案 0 :(得分:1)
我认为Factory
不需要返回某些东西。
我创建了一个jsFiddle here并发现如果工厂没有返回任何内容,注入工厂的值只是undefined
并且不会发生错误。
答案 1 :(得分:1)
您不必 ,即使在大多数情况下您都需要。如果没有指定任何内容,则所有javascript函数都返回undefined,因此这不是错误。