angularjs - reactivos - Forma recomendada de obtener datos del servidor
tablas angular 4 (2)
Hay casos en que $ resource puede no ser apropiado cuando se habla con back-end. Esto muestra cómo configurar el comportamiento $ resource like sin usar recursos.
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;
});
Luego, dentro de tu controlador puedes:
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;
});
};
¿Cuál es la forma recomendada de conectarse a las fuentes de datos del servidor en AngularJS sin usar $resource
?
El $resource
tiene muchas limitaciones tales como:
- No usar futuros adecuados
- No siendo lo suficientemente flexible
Recomiendo que use $resource .
Puede admitir (omisión de url) en la próxima versión de Angularjs. Entonces podrás codificar de esta manera:
// need to register as a serviceName
$resource(''/user/:userId'', {userId:''@id''}, {
''customActionName'': {
url:''/user/someURI''
method:''GET'',
params: {
param1: ''....'',
param2: ''....'',
}
},
....
});
Y las devoluciones de retorno se pueden manejar en ctrl scope como este.
// ctrl scope
serviceName.customActionName ({
paramName:''param'',
...
},
function (resp) {
//handle return callback
},
function (error) {
//handler error callback
});
Probablemente pueda manejar código en un nivel de abstracción más alto.