2013-07-23 74 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不會允許。 –