获取重复对象的数组而不是单个对象

时间:2016-09-18 14:11:25

标签: javascript angularjs

我正在编写一个相当简单的crud应用程序,但是,我似乎停留在编辑(编辑控制器)部分代码上。我有一个学生名单,我选择一个更新。但我收到错误“包含一个对象但得到一个数组的预期响应”。

当我直接查询网络服务时,我明白了 enter image description here

但是当我检查元素并转到网络标签时,我看到了这个

enter image description here

这是我的代码。

 var StudentManagement = angular.module('StudentManagement',      ['ngRoute','ngResource','ui.bootstrap']);

 StudentManagement.config(function ($routeProvider) {
  $routeProvider
    .when("/", {
        templateUrl: "list.html",
        controller: "HomeController"
    })
    .when("/add", {
        templateUrl: "add.html",
        controller: "AddController"
    })
    .when("/edit/:editId", {
        templateUrl: "edit.html",
        controller: "EditController"
    })
    .otherwise({
        redirectTo: "/"
    });


   });

  StudentManagement.factory('Student', function ($resource) {
  return $resource('/api/Student/:id', { id: '@id' }, { update: { method:   'PUT' } });
 });

 StudentManagement.controller("HomeController",
 function ($scope, $location, Student) {

    $scope.search = function () {
        $scope.students = Student.query();
    };// end search

    $scope.reset = function ()
    {
        $scope.search();
    }// end reset function

    $scope.search();


   });

  StudentManagement.controller("EditController",
  function ($scope, $location, $routeParams, Student) {
    // get the student given the specific id
    var id = $routeParams.editId;
    $scope.student=Student.get({id: id});

    $scope.updateForm = function () {
        Student.update({id:id}, $scope.student, function () {
            $location.path('/');
        });
    }// end edit function

    $scope.cancelForm = function () {
        $location.path('/');
    }// end cancel function


});

1 个答案:

答案 0 :(得分:0)

您正在从服务器返回对象数组。

因此,您应该在资源定义中添加isArray : true

  $resource('/api/Student/:id', { id: '@id' }, 
                  { update: { method:   'PUT',isArray : true} 
            });

您可以从服务器

返回对象的对象

如果您想使当前代码可行