在Angularjs ngResource中使用promises

时间:2015-03-24 16:49:03

标签: angularjs promise ngresource

我正在尝试使用Angular的ngResource模块从服务器发送接收响应。我正在使用promises但它不起作用,我认为我的代码可能有问题。它按原样:

控制器:

var LoginController = angular.module('LoginController', [

]);

LoginController.controller("LoginController", ['$scope','$location','LoginService',  function($scope, $location, LoginService) {


    $scope.user = {}


    $scope.checkCredentials = function () {
        var userCredentials = LoginService.get();
        userCredentials.$promise.then(function(result){
            $scope.user.login = response.login;
            $scope.user.password = response.password;
        });


    };
}]);

休息模块:

var RestServices = angular.module('RestServices', ['ngResource']);

RestServices.factory('LoginService', ['$resource','$routeParams',
    function($resource, $routeParams){

        return $resource('/user',{},{
            get: {method:'GET', isArray:false}
        });
    }]);

如果我放线:

var userCredentials = LoginService.get();

直接在控制器的声明中,它正常工作并且对象用户被正确填充并发送到我的视图,但是当我尝试在通过单击按钮调用的函数中执行该操作时(就像它在我的代码中)它不会正确填写用户对象。我的代码可能有什么问题? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

改变"结果"到"回复"!

var userCredentials = LoginService.get();
userCredentials.$promise.then(function(response){
    $scope.user.login = response.login;
    $scope.user.password = response.password;
    });

但你也可以用更简洁和惯用的方式实现同​​样的目标:

LoginService.get(function(data){
    $scope.user.login = data.login;
    $scope.user.password = data.password;
    });