从服务器获取数据的推荐方法

在不使用$resource情况下,build议如何连接到AngularJS中的服务器数据源。

$resource有许多限制,例如:

  1. 没有使用适当的期货
  2. 不够灵活

有些情况下$资源可能不适合与后端交谈。 这显示了如何在不使用资源的情况下设置$资源。

 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; }); }; 

我build议你使用$资源 。

它可能支持(url覆盖)在下一个版本的Angularjs。 那么你将可以这样编码:

 // need to register as a serviceName $resource('/user/:userId', {userId:'@id'}, { 'customActionName': { url:'/user/someURI' method:'GET', params: { param1: '....', param2: '....', } }, .... }); 

和callback可以像这样在ctrl范围内处理。

 // ctrl scope serviceName.customActionName ({ paramName:'param', ... }, function (resp) { //handle return callback }, function (error) { //handler error callback }); 

可能你可以在更高的抽象层次上处理代码。