代码之家  ›  专栏  ›  技术社区  ›  Rasool Ghafari

Angularjs$资源保存操作返回promise对象,而不是响应的实际值

  •  1
  • Rasool Ghafari  · 技术社区  · 8 年前

    我将此工厂定义为调用rest方法:

    (function() {
        'use strict';
        angular.module('rgh').factory('Charge', Charge);
    
        function Charge($resource) {
            return $resource('rgh/charge/charge', {}, {
                'save' : {
                    url : 'rgh/charge/charge',
                    method : 'POST'
                }
            });
        }
    })();
    

    还有这个 RestContrller :

    @RestController
    @RequestMapping("/rgh/charge/charge")
    public class ChargeResource {
    
        @Autowired
        private IChargeService chargeService;
    
        @PostMapping
        public long save(@RequestBody ChargeViewModel viewModelEntity) {
            return chargeService.save(ModelMapper.map(viewModelEntity, Charge.class));
        }
    }
    

    正如您所看到的,save方法返回已保存对象的id,现在我想在angular contrller中获取返回的id:

    (function() {
        'use strict';
    
        angular
            .module('rgh')
            .controller('ChargeDetailController', ChargeDetailController);
    
        function ChargeDetailController(Charge) {
            var vm = this;
            vm.save = save;
    
            function save() {
                vm.isSaving = true;
                Charge.save(vm.charge, onSaveSuccess, onSaveError);
            }
    
            var onSaveSuccess = function (result) {
                vm.isSaving = false;
    
                console.log(result);
            };
    
            var onSaveError = function () {
                vm.isSaving = false;
            };
        }
    })();
    

    但当我检查控制台时,我看到 $promise 对象而不是实际id。

    1 回复  |  直到 8 年前
        1
  •  1
  •   lzagkaretos    8 年前

    您可以更改 save 角度控制器中的方法如下:

    function save() {
    
        vm.isSaving = true;
    
        Charge.save(vm.charge).$promise
            .then(function (result) {
                console.log(result);
            })
            .catch(function (error) {
                // Error
            })
            .finally(function() {
                vm.isSaving = false;
            });
    }
    
    推荐文章