2015-08-05 2 views
1

У меня есть AuthenticationService, который содержит эту функцию:AngularJs не может прочитать свойство «затем» неопределенной

//this.userApi = Restangular.service('api/sessions'); 

login(user) { 
    let that = this; 

    this.userApi.post(user).then(function(user) { 
     that.session.create(user.sessionId, user.userId, user.username); 
     return user; 
    }); 
} 

И в мой контроллер:

login() { 
    this.authService 
     .login(that.user) 
     .then(function(user) { 
      $scope.setCurrentUser(user); 

     }, 
     function(result) { 
      console.log('fail', result.status); 
     }); 
} 

Я не понимаю, почему я получаю «не может прочитать свойство «затем» неопределенных»на этой линии: that.authService.login(that.user).then(function (user) ...

+1

that.authService.login явно возвращается не определено. (ваш код ничего не возвращает) –

+0

Он не возвращает undefined в соответствии с моим отладчиком. – yeouuu

+0

снова прочитайте сообщение об ошибке. «не может читать свойство», а затем «неопределенного», указывая на строку 'that.authService.login(). then (' так очевидно, что он возвращается неопределенным, потому что 'then' не определен на' undefined'. –

ответ

7

В вашем первом фрагменте вам необходимо вернуть обещание, чтобы продолжить цепочку в другом фрагменте.

//this.userApi = Restangular.service('api/sessions'); 

login(user) { 
    let that = this; 

    return this.userApi.post(user).then(function(user) { 
     that.session.create(user.sessionId, user.userId, user.username); 
     return user; 
    }); 
} 
+0

, который был близок к кевину: D вы избили меня на 3 секунды. Я отвечу на ваш ответ. –

+0

Нет, вы избили меня. :) –

+0

в любом случае отлично answer;) –

4

Вы должны попробовать это:

//this.userApi = Restangular.service('api/sessions'); 

login(user) { 
    let that = this; 

    return this.userApi.post(user).then(function(user) { 
     that.session.create(user.sessionId, user.userId, user.username); 
     return user; 
    }); 
} 
Смежные вопросы