从服务器获取数据的推荐方法
在不使用$resource
情况下,build议如何连接到AngularJS中的服务器数据源。
$resource
有许多限制,例如:
- 没有使用适当的期货
- 不够灵活
有些情况下$资源可能不适合与后端交谈。 这显示了如何在不使用资源的情况下设置$资源。
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 });
可能你可以在更高的抽象层次上处理代码。