为什么我无法将用户数据发送到工厂? NG-令牌身份验证

时间:2017-01-26 22:01:13

标签: angularjs devise

我正在使用ng-token-auth和devise-token-auth,我很疯狂。

经过几个小时努力设置后,我无法将用户(我已登录)传递给工厂。

我的控制器

app.controller('sign_in_controller', function($scope, UserData){

 $scope.handleLoginBtnClick = function() {
    $auth.submitLogin($scope.loginForm)
        .then(function(resp) {

    })
        .catch(function(resp) {
    });
};

$scope.$on('auth:login-success', function(ev, user, UserData) {
    console.log(user);
    UserData.addUser(user);   <---Here is where i'm trying to send my user to factory
});

}

我简单的工厂&gt;

app.factory('UserData', function(){
    var user = {};
    var interfaz = {
        addUser: function(user){
            debugger;
            user = user;
        },
        getUser: function(){
            return user;
        }

    }

    return interfaz;
});

我得到的错误:

ypeError:无法读取属性&#39; addUser&#39;未定义的

我做错了什么?我尝试使用$ RootScope,但我不能......

非常感谢你。

2 个答案:

答案 0 :(得分:1)

这是因为您在回调函数中将UserData作为参数传递。 UserData未定义,因此您会收到错误。 您已在控制器中注入UserData,因此只需使用:

$scope.$on('auth:login-success', function(ev, user) {
    console.log(user);
    UserData.addUser(user);
});

答案 1 :(得分:0)

尝试更改命名惯例

复制以下代码并进行测试。这应该工作

  app.factory('UserData', function(){
    var _user = {};
    var interfaz = {
        addUser: function(user){
            _user = user;
        },
        getUser: function(){
            return _user;
        }

    }

    return interfaz;
});
  

_user