2013-07-23 75 views
0

我正在使用angularjs 1.1.5并为资源提供服务提供程序,有一个用例需要重新返回响应并需要对一些信息进行归一化,这是一个特殊情况,但资源在整个项目中使用,并且不希望在调用的任何地方都使用不同的资源或自定义过滤器。为资源添加自定义回调

有没有一种方法可以在从查询或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; 
    }]) 

回答

0

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

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

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

所以,你可以用这样的回调调用的GET方法: -

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

是的,这是正确的,这是我使用的是什么,但问题是,我想这个回调将每次执行并且仍然能够在我的控制器中使用另一个回调函数,例如,当_seccion_的ID是32时,需要完成一些转换,这应该是自动完成的(不必每次都需要编写相同的回调函数使用_Seccion_),并且仍然能够在我的控制器和指令中使用正常的回调(已经具有已转换的数据)。 –

+0

我认为你应该使用[Restangular](https://github.com/mgonto/restangular)。它可以让你做许多神奇的事情,ngResource不会允许。 –