如何使用angular返回资源中的数据

时间:2015-01-21 14:08:12

标签: javascript angularjs resources

我正在创建与Rest服务器交互的服务层,但是我对ngResource的承诺存在一些问题。

var grupogestion= angular.module('app.grupogestion.services', ['ngResource']);

grupogestion.factory('Grupogestion', ['$resource', function ($resource){
    return $resource('api/grupogestiones/:action/:id.:format',
            {
                action: '@action', id:'@id', format:'json'
            },
            {
                'get': {method:'GET'},
                'post': {method:'POST',headers : {'Content-Type': 'application/x-www-form-urlencoded'}},
                'save': {method: 'POST',headers : {'Content-Type': 'application/x-www-form-urlencoded'}}
            }
    );
}]);

grupogestion.service('GrupogestionService',['Grupogestion', function (Grupogestion){
    this.findAll = function (){
        Grupogestion.get({action: 'index'},function (data, status, headers, config){
            return data;    
        });
    }

    this.save = function (grupogestion){
        Grupogestion.save({'action':'add'},$.param(grupogestion)).$promise.then(
            function(data){
                alert('k');
                return data;
            },
            function(error){
                alert('j');
                return error;
            }
        );
    }
}]);

当我从角度控制器调用var response = GrupogestionService.save(data)时,我不会在调用函数的同时获取数据,因此问题是:如何修改GrupogestionService以将数据返回给控制器?

我试图回复承诺,但我无法做到。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

// service code
grupogestion.service('GrupogestionService', ['Grupogestion', function (Grupogestion) {
    this.findAll = function () {
        Grupogestion.get({action: 'index'}, function (data, status, headers, config) {
            return data;
        });
    };

    this.save = function (grupogestion) {
        return Grupogestion.save({'action': 'add'}, $.param(grupogestion));
    }
}]);

//run in your controller
var response = GrupogestionService.save(data).$promise.then(
    function (data) {
        alert('k');
        return data;
    },
    function (error) {
        alert('j');
        return error;
    }
);