繁体   English   中英

修复AngularJS错误:提供程序必须从$ get工厂方法返回值

[英]Fixing AngularJS error: Provider must return value from $get factory method

当我使用下面的代码时,出现以下错误:

提供程序“登录”必须从$ get工厂方法返回一个值。

我已经检查过此处此处的stackoverflow帖子,但无法弄清楚我在做什么错。

myApp.factory('Login', function($location, $firebaseAuth, Ref, Auth) {
    var authData = Ref.getAuth();

   if (authData) {console.log('already logged in with ' + authData.uid)} else {

      return Auth.$authAnonymously({rememberMe: true}).then(redirect, showError);

      function redirect() {
      $location.path('/account');
    }

      function showError(err) {
      Login.err = err;
    }
  }
});

factory而言,您必须返回一个对象。 由于您不返回任何内容,这意味着其他服务/控制器无法使用此服务。

如果您只是在检查身​​份验证,则它必须在您的Auth服务中,该服务必须是IIFE函数。 它将检查并重定向用户。

例如:

在任一Auth / Ref服务中,创建一个IIFE

(function() {
var authData = Ref.getAuth();

   if (authData) {console.log('already logged in with ' + authData.uid)} else {

      return Auth.$authAnonymously({rememberMe: true}).then(redirect, showError);

      function redirect() {
      $location.path('/account');
    }

      function showError(err) {
      Login.err = err;
    }
  }
})();

否则,将代码插入init()方法中,然后在服务中调用它。 因此,它将仅运行一次。

当您想为应用程序的其他部分公开单例接口时,必须使用service。

您必须返回一个对象或函数或从工厂获取一个值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM