【问题标题】:Using promises in Angular's ngResource在 Angular ngResource 中使用 Promise
【发布时间】:2015-05-28 02:31:24
【问题描述】:

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

控制器:

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();

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

【问题讨论】:

  • 你能把其他代码sn-p吗?
  • .then*function(result) 但从响应中提取数据?
  • 在你的 LoginService.get() 调用中添加一个 .catch 块来查看是否有失败
  • 您是否在视图中为用户对象使用了两种方式的绑定语法?
  • 是的,两种方式绑定工作正常(使用静态值测试我正在使用的变量)

标签: angularjs promise ngresource


【解决方案1】:

将“结果”改为“响应”!

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;
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-26
    • 1970-01-01
    • 2015-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-22
    相关资源
    最近更新 更多