Каков рекомендуемый способ подключения к источникам данных сервера в AngularJS без использования $resource.
 $resource имеет множество ограничений, таких как:
- Не использовать правильные фьючерсы
- Не достаточно гибкий
Каков рекомендуемый способ подключения к источникам данных сервера в AngularJS без использования $resource.
 $resource имеет множество ограничений, таких как:
Бывают случаи, когда $resource может не соответствовать при разговоре с бэкэнд. Это показывает, как настроить $resource like поведение без использования ресурса.
angular.module('myApp').factory('Book', function($http) {
  // Book is a class which we can use for retrieving and 
  // updating data on the server
  var Book = function(data) {
    angular.extend(this, data);
  }
  // a static method to retrieve Book by ID
  Book.get = function(id) {
    return $http.get('/Book/' + id).then(function(response) {
      return new Book(response.data);
    });
  };
  // an instance method to create a new Book
  Book.prototype.create = function() {
    var book = this;
    return $http.post('/Book/', book).then(function(response) {
      book.id = response.data.id;
      return book;
    });
  }
  return Book;
});
Затем внутри вашего контроллера вы можете:
var AppController = function(Book) {
  // to create a Book
  var book = new Book();
  book.name = 'AngularJS in nutshell';
  book.create();
  // to retrieve a book
  var bookPromise = Book.get(123);
  bookPromise.then(function(b) {
    book = b;
  });
};
Я рекомендую вам использовать $resource.
Он может поддерживать (переопределить URL) в следующей версии Angularjs. Затем вы сможете сделать код следующим образом:
// need to register as a serviceName
$resource('/user/:userId', {userId:'@id'}, {
    'customActionName':    {
        url:'/user/someURI'
        method:'GET',
        params: {
            param1: '....',
            param2: '....',
        }
    },
     ....
});
И возвращать обратные вызовы можно обрабатывать в области ctrl, как это.
// ctrl scope
serviceName.customActionName ({
    paramName:'param',
    ...
}, 
function (resp) {
    //handle return callback
}, 
function (error) {
    //handler error callback
});
Вероятно, вы можете обрабатывать код с более высоким уровнем абстракции.