2013-07-23 3 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: экземпляр $ action ([parameters], [успех], [ошибка])

Таким образом, вы можете вызвать свой метод GET с обратным вызовом, как это: -

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

Да, это правильно, и это то, что я использую, но проблема в том, что я хочу этот обратный вызов будет выполняться каждый раз, когда И по-прежнему можно использовать другой обратный вызов внутри моих контроллеров, например, когда идентификатор для _seccion_ равен 32, есть некоторые преобразования, которые необходимо выполнить, это должно быть сделано автоматически (не нужно писать одну и ту же функцию обратного вызова каждый раз, когда я хочу использовать _Seccion_) и все еще иметь возможность использовать обычные обратные вызовы (с уже преобразованными данными) внутри моих контроллеров и директив. –

+0

Я думаю, вы должны использовать [Restangular] (https://github.com/mgonto/restangular). Это позволит вам делать много удивительных вещей, которые ngResource не позволит. –

Смежные вопросы