AngularJS服务未返回承诺

时间:2015-06-24 21:16:41

标签: javascript angularjs promise

我最近开始使用AngularJS,虽然我可以看到一些改进,但我无法理解我的承诺。我创建了一个登录服务,它使用Parse框架使用户能够注册,并使用寄存器控制器将数据从表单发送到服务。由于注册需要几秒钟,我决定使用承诺在注册后将当前用户返回登录控制器。不幸的是我一直收到这个错误:无法读取未定义的属性'then'。有人可以指出我正确的方向吗?

控制器:

(function () {
'use strict';

angular
    .module('app.register')
    .controller('RegisterController', RegisterController);

RegisterController.$inject = ['$q', 'logger', 'loginservice'];
/* @ngInject */
function RegisterController($q, logger, loginservice) {
    var vm = this;
    vm.title = 'Register'; 
    vm.register = register;     
    vm.user = {
        username: "",
        password: "",
        email: ""
    };

    activate();

    function activate() {
        logger.info('Activated Register View');
    }

    function register() {
        var promise = loginservice.register(vm.user.username, vm.user.email, vm.user.password);

        promise.then(function(userData) {
            console.log("User: ", userData);
        });
    }
}
})();

服务:

(function() {
'use strict';

angular
    .module('app.core')
    .factory('loginservice', loginservice);

loginservice.$inject = ['$http', '$q', 'logger'];
/* @ngInject */
function loginservice($http, $q, logger) {
    var service = {
        // logIn: logIn,
        // logOut: logOut,
        register: register
    };

    return service;

    function initialize() {
        console.log("parse initialized");
    }

    function register(username, email, password) {
        //alert("HELLO FROM " + username + " " + password + " " + email);

        Parse.initialize(appId, parseId);
        var user = new Parse.User();
        user.set("username", username);
        user.set("password", password);
        user.set("email", email);

        $http.get(user.signUp(null, {
         success: function(user) {
            return user;
          },
          error: function(user, error) {
            return error.message;
            // Show the error message somewhere and let the user try again.
            alert("Error: " + error.code + " " + error.message);
          }
        })).then(function() {
            return user;
        });
    }
}
})();

2 个答案:

答案 0 :(得分:1)

您只需要from skimage.util import img_as_float img = img_as_float(image[::2, ::2]) return来电:

$http

如果您没有返回function register(username, email, password) { //alert("HELLO FROM " + username + " " + password + " " + email); Parse.initialize(appId, parseId); var user = new Parse.User(); user.set("username", username); user.set("password", password); user.set("email", email); return $http.get(user.signUp(null, { success: function(user) { return user; }, error: function(user, error) { return error.message; // Show the error message somewhere and let the user try again. alert("Error: " + error.code + " " + error.message); } })).then(function() { return user; }); } 调用期间创建的承诺,则函数(默认情况下)会返回$http

答案 1 :(得分:0)

只需返回$http这样的电话

function register(username, email, password) {
    ...
    return $http.get(user.signUp(null, {
     success: function(user) {
        return user;
      },
      error: function(user, error) {
        return error.message;
        // Show the error message somewhere and let the user try again.
        alert("Error: " + error.code + " " + error.message);
      }
    })).then(function() {
        return user;
    });
}