Как мне преобразовать ответ $ http.post в $ resource в angularjs?

0

Я хочу преобразовать $ 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();
}
Теги:

1 ответ

1
Лучший ответ

$ 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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню