2013-12-04 2 views
1

Я хотел бы получить совет о том, как лучше всего включить логику в мою модель. Ниже приведена упрощенная версия моей модели. У меня есть некоторая логика, которая должна быть включена в задачу start/pause/complete перед запуском HTTP-вызова, но я не уверен, где ее включить. Я видел сообщение об использовании прототипа для расширения моей модели, но это не похоже на работу с ресурсом $. Похоже, это было бы очень распространенной потребностью, но я не мог найти никаких сообщений, которые бы послужили хорошим объяснением.AngularJS Model Logic

angular.module('myModels', ['ngResource']) 

.factory('Tasks', function($resource){ 

    return $resource(':url', {}, 
     { 
     'query':  { 
      method: 'GET', 
      isArray:true, 
      url: '/tasks/:id.json' 
     }, 
     'startTask':  { 
      method: 'GET', 
      url: '/tasks/task_start/:id.json' 
     }, 
     'pauseTask':  { 
      method: 'GET', 
      url: '/tasks/task_pause/:id.json' 
     }, 
     'completeTask':  { 
      method: 'GET', 
      url: '/tasks/task_complete/:id.json' 
     } 
    }); 
}) 

ответ

1

Если вам необходимо выполнить некоторые задачи, каждый раз до и/или после того, как запрос HTTP, вы можете использовать $ httpProvider перехватчики

Вот документация с примерами http://docs.angularjs.org/api/ng.$http

+1

Оказывается, что $ httpProvider перехватчики будут действовать на все http-запросы. Это верно? Я ищу, как лучше всего добавить код на конкретный завод, который использует $ resource (или $ http). Например, с приведенными выше задачами я хотел бы преобразовать код состояния задачи в слово при получении заданий и включить его в объекты задачи. Один из методов, который пришел на ум, заключался в том, чтобы использовать мой существующий код в качестве функций низкого уровня, а затем добавить над ним уровень, который будет представлять мои функции модели. Это будет похоже на то, как вы абстрагируете свою модель от вызовов базы данных на сервере. Мысли? – Darryl