Я хочу преобразовать $ http.post ответ в $ resource. Я использую REST API, поэтому для этого мне нужно использовать $ resource. Мой код работает с $ http, Любая идея, как я могу достичь этого с помощью $ resource? Вот код.. Спасибо
var myApp = angular.module('student', []);
function StudentController($scope, $http){
var loadStudents = function(){
$scope.students = [];
$http.get('/students.json').success(
function(response, status, headers, config){
$scope.students = response.students;
}
).error(function(response, status, headers, config){
$scope.error_message = response.error_message;
});
}
$scope.newStudent = function(){
$scope.enterNew = true;
$scope.editing = false;
$scope.student = {};
};
$scope.createStudent = function(){
$http.post('/students.json', {"student": $scope.student})
.success(function(response, status, headers, config){
$scope.students.push(response.student);
$scope.enterNew = false;
$scope.editing = false;
})
.error(function(response, status, headers, config){
$scope.error_message = response.error_message;
});
}
$scope.editStudent = function(student){
$scope.enterNew = false;
$scope.editing = true;
$scope.student = student;
};
$scope.updateStudent = function(){
$http.put('/students/' + $scope.student.id + '.json', {"student": $scope.student})
.success(function(response, status, headers, config){
$scope.student = response.student;
$scope.enterNew = false;
$scope.editing = false;
})
.error(function(response, status, headers, config){
$scope.error_message = response.error_message;
});
};
$scope.cancelSave = function(){
$scope.enterNew = false;
$scope.editing = false;
$scope.student = {};
};
$scope.deleteStudent = function(student){
$http.delete('/students/' + student.id + '.json')
.success(function(response, status, headers, config){
var index = $scope.students.indexOf(student);
$scope.students.splice(index,1);
})
.error(function(response, status, headers, config){
$scope.error_message = response.error_message;
});
}
loadStudents();
}
$ resource позволяет создать объект ресурса, который в конечном итоге позволит вам взаимодействовать с источниками данных на стороне сервера RESTful.
Возвращенный объект ресурса имеет методы действий, которые обеспечивают поведение на высоком уровне без необходимости взаимодействия с низкоуровневой службой $ http.
Чтобы использовать $ resource для службы отдыха, сначала вам нужно будет включить библиотеку ng-resource на вашей странице.
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.4/angular-resource.js"></script>
Затем в js файле зависимость вводит ng-ресурс в ваш угловой модуль.
var userApp = angular.module("userApp", ['ngResource','ngRoute']);
Как только это будет сделано, вы можете играть с $ resource,
Теперь вы можете совершать вызовы отдыха, используя $ resource вместо $ http, как это:
var myApp = angular.module('student', ['ngResource','ngRoute']);
function StudentController($scope, $resource){
var loadStudents = function(){
$scope.students = [];
//$query() is a "GET" method that expects an JSON arry inreturn
var getStuResObj=$resource("/students.json");// Creating Resource obj;
getStuResObj.$query().$promise.then(function(successResponse){
$scope.students = response.students;
},function(errorResponse){
$scope.error_message = response.error_message;
});
.
.
.
.
.
.
//$save() is a "POST" method
var createStuResObj=$resource("/students.json");
createStuResObj.$save($scope.student).$promise.then(function(successResponse){
$scope.students.push(response.student);
$scope.enterNew = false;
$scope.editing = false
},function(errorResponse){
function(response, status, headers, config){
$scope.error_message = response.error_message;
});
.
.
.
.
.
.
//$delete() is a "DELETE" method
var deleteStuResObj=$resource("/students/' + student.id + '.json");
deleteStuResObj.$delete().$promise.then(function(successResponse){
var index = $scope.students.indexOf(student);
$scope.students.splice(index,1);
},function(errorResponse){
function(response, status, headers, config){
$scope.error_message = response.error_message;
});
Код, приведенный выше, заключается в том, как вы конвертируете $ http-вызовы в вызовы $ resource
Для дальнейшего ознакомления с этой концепцией ознакомьтесь с официальным сайтом AngularJs