как передать событие в обратном вызове, используя $resource в AngularJS

#javascript #angularjs #angularjs-resource

#javascript #angularjs #angularjs-ресурс

Вопрос:

У меня есть функция, подобная этой:

 module.exports.getMyItems = ['$rootScope', '$resource', function getMyItems($rootScope, $resource) {
  return $resource('/myEndpoint/:id',
    {id  : '@id'},
    {
      query: {
        method: 'GET',
        isArray: true
      }
  });
}];
 

Я хочу создать событие, подобное

 $rootScope.$emit('ITEMS_LOADING');
 

как я могу добавить обратный вызов для отправки этого события при загрузке ресурса?

Ответ №1:

как я могу добавить обратный вызов для отправки этого события при загрузке ресурса?

Можно добавить перехватчик ответа:

 module.exports.getMyItems = ['$rootScope', '$resource', function getMyItems($rootScope, $resource) {
  return $resource('/myEndpoint/:id',
    {id  : '@id'},
    {
      query: {
        method: 'GET',
        isArray: true
      },
      interceptor: {
          response: function(response) {
            // Get the instance from the response object
            var instance = response.resource;
            //emit message
            $rootScope.$emit('ITEMS_LOADED');        
            // Return the instance
            return instance;
          }    
      }
  });
}];
 

Для получения дополнительной информации см.