2015-07-01 2 views
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(); 
 
}

+0

Не нужно менять ее на '$ resource'. Все будет хорошо. –

+0

см. Основной пример ресурса кредитной карты. Вы узнаете, как это будет работать. https://docs.angularjs.org/api/ngResource/service/$resource – Vineet

+0

ваше заявление «Я использую REST API, поэтому для этого мне нужно использовать $ resource». основано на ложном предположении. – Claies

ответ

1

$ Ресурс позволяет создать объект ресурсов, что в конечном итоге позволит вам взаимодействовать с RESTful сторона сервера источников данных ,

Возвращаемый объект ресурс имеет методы действий, которые обеспечивают поведения высокого уровня без необходимости взаимодействовать с низкого уровня $ HTTP службы.

Чтобы использовать $ ресурса для обслуживания отдыха, сначала вам нужно будет включать в себя нг-ресурсах библиотеки в вашей странице.

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.4/angular-resource.js"></script> 

Затем в файле JS, зависимости инъекционных нг-ресурс в вашем угловом модуле.

var userApp = angular.module("userApp", ['ngResource','ngRoute']); 

Как только это будет сделано, вы можете играть с $ ресурсом,

Теперь вы можете сделать остальные звонки с помощью $ ресурса вместо $ 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 calls

Для получения дополнительной информации об этой концепции проверьте Official AngularJs site

Смежные вопросы