Angularjs$resource save操作返回承诺对象,而不是响应的实际值

Angularjs$resource save操作返回承诺对象,而不是响应的实际值,angularjs,angular-resource,Angularjs,Angular Resource,我将此工厂定义为调用rest方法: (function() { 'use strict'; angular.module('rgh').factory('Charge', Charge); function Charge($resource) { return $resource('rgh/charge/charge', {}, { 'save' : { url : 'rgh/charge/char

我将此工厂定义为调用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'
            }
        });
    }
})();
这个
restcontroller

@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。

您可以在Angular Controller中更改
保存
方法,如下所示:

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;
        });
}
我将把Charge.save(vm.Charge,onSaveSuccess,onSaveError)改为Charge.save(vm.Charge)。$promise.then(onSaveSuccess)。catch(onSaveError);