添加资源的自定义回调

时间:2013-07-23 18:34:26

标签: javascript angularjs angularjs-service

我正在使用angularjs 1.1.5并且有一个资源的服务提供者,有一个用例需要重新分析返回的响应并且需要对某些信息进行规范化,这是一个特例但是资源是在整个项目中使用,并且不希望在调用的任何地方使用不同的资源或自定义过滤器。

有没有办法在从查询或get方法返回时添加额外的函数,但不会影响正常行为。

应该是这样的,每当调用资源get方法时,执行回调对数据执行一些转换,然后按预期返回此数据。

以下是目前服务的实施方式。

  factory('Seccion', ['$resource', 'api_url', function($resource, api_url) {
    var Seccion = $resource(api_url + 'secciones/:seccionId/:nestedResource/:nestedId',
      {
        seccionId: '@seccionId',
        nestedResource: '@nestedResource',
        nestedId: '@nestedId'
      },
      {
      getWithNotas: {
        method: 'GET',
        params: {
          nestedResource: 'notas',
          order: 'fecha,desc;hora,desc',
          q: 'activo,=,1;borrado,=,0',
          count: 9,
          offset: 0
        }
      }
    });
    return Seccion;
  }])

1 个答案:

答案 0 :(得分:0)

您可以使用回调调用get方法。在这里,我引用了Angular $resource文档。

  

可以使用以下参数调用类对象或实例对象上的操作方法:

     
      
  • HTTP GET“class”操作:Resource.action([parameters],[success],[error])
  •   
  • 非GET“类”操作:Resource.action([parameters],postData,[success],[error])
  •   
  • 非GET实例操作:实例。$ action([参数],[成功],[错误])
  •   

所以你可以用这样的回调来调用你的get方法: -

var s = Seccion.getWithNotas({params}, function() {
    doSomethingTo(s); 
}