Ошибка, используя затем и поймать в angularjs

0

Я пытаюсь создать аутентификацию пользователя с использованием Flask в качестве backend и AngularJS в качестве интерфейса. Но я застрял в этой ошибке. Ниже приведен угловой код, который я использую. Функция входа успешно выполняется, но также вызывает следующую ошибку. Пожалуйста, помогите мне в решении/решении этой проблемы.

'use strict';

var userModule = angular.module('userModule', ['userServices']);

userModule.controller('LoginController', ['$scope', '$location', 'userAuth', function($scope, $location, userAuth) {

$scope.login = function() {
    console.log("username: " + $scope.email + ", password: " + $scope.password);
    // userAuth.login($scope.username, $scope.password);

    // initial values
  $scope.error = false;
  $scope.disabled = true;

  // call login from service
  userAuth.login($scope.email, $scope.password)
  // handle success
  .then(function () {
    console.log('I am in then function');
  })
  .catch(function () {

  })
};

}]);

ошибка

TypeError: userAuth.login(...).then(...).catch is not a function
at Object.$scope.login          (http://localhost:5000/static/js/controllers/user.js:28:13)
at http://localhost:5000/static/lib/angular/angular.js:6365:19
at Object.Scope.$eval   (http://localhost:5000/static/lib/angular/angular.js:8057:28)
at Object.Scope.$apply (http://localhost:5000/static/lib/angular/angular.js:8137:23)
at HTMLFormElement.<anonymous> (http://localhost:5000/static/lib/angular/angular.js:13159:11)
at http://localhost:5000/static/lib/angular/angular.js:1992:10
at Array.forEach (native)
at forEach (http://localhost:5000/static/lib/angular/angular.js:130:11)
at HTMLFormElement.eventHandler (http://localhost:5000/static/lib/angular/angular.js:1991:5)

и моя функция входа в систему

function login(email, password) {

// create a new instance of deferred
var deferred = $q.defer();

// send a post request to the server
$http.get('http://' + email + ':' + password + '@localhost:5000/api/login')
  // handle success
  .success(function (data, status) {
    if(status === 200 && data.result){

      // print response
      console.log('Response: ' + JSON.stringify(data))

      user = true;
      deferred.resolve();
    } else {

      // print response
      console.log('Response: ' + JSON.stringify(data))

      user = false;
      deferred.reject();
    }
  })
  // handle error
  .error(function (data) {

    // print response
    console.log('Response: ' + JSON.stringify(data))

    user = false;
    deferred.reject();
  });

// return promise object
return deferred.promise;

  }

Я устал от поиска и выяснения этой проблемы, но ничего не нашел. Не знаю, что случилось:/Любая помощь будет оценена.

  • 0
    Показать, что возвращается из userAuth.login() . Либо это не обещание, либо у вас может быть старая версия angular, которая не включает метод catch
  • 0
    Я думаю, что вы можете удалить .catch () и можете добавить вторую ошибку, затем
Показать ещё 2 комментария
Теги:
login
angular-promise

1 ответ

0
Лучший ответ

попробуй это

userAuth.login($scope.email, $scope.password)
 .then(function () {
    console.log('I am in then function');
 },
 function(error){
    console.log('Error', error);
 })
  • 0
    Спасибо, отлично работает (у)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню