Kullanmadan AngularJS'deki sunucu veri kaynaklarına bağlanmanın önerilen yolu nedir $resource
?
Aşağıdaki $resource
gibi birçok sınırlaması vardır:
- Uygun vadeli işlemleri kullanmamak
- Yeterince esnek olmamak
Kullanmadan AngularJS'deki sunucu veri kaynaklarına bağlanmanın önerilen yolu nedir $resource
?
Aşağıdaki $resource
gibi birçok sınırlaması vardır:
Yanıtlar:
Arka uçla konuşurken $ resource'un uygun olmadığı durumlar vardır. Bu, kaynak kullanmadan $ resource benzeri davranışın nasıl ayarlanacağını gösterir.
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;
});
Ardından kontrol cihazınızın içinde şunları yapabilirsiniz:
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;
});
};
book
veya bir dizi e- postayı nasıl paylaşırsınız book
?
$ Resource kullanmanızı tavsiye ederim .
Angularjs'in sonraki sürümünde (url geçersiz kılma) destekleyebilir. O zaman şu şekilde kodlama yapabileceksiniz:
// need to register as a serviceName
$resource('/user/:userId', {userId:'@id'}, {
'customActionName': {
url:'/user/someURI'
method:'GET',
params: {
param1: '....',
param2: '....',
}
},
....
});
Ve dönüş geri aramaları bu şekilde ctrl kapsamında ele alınabilir.
// ctrl scope
serviceName.customActionName ({
paramName:'param',
...
},
function (resp) {
//handle return callback
},
function (error) {
//handler error callback
});
Muhtemelen kodu daha yüksek soyutlama seviyesinde idare edebilirsiniz.