响应与配置的参数不匹配:

Sau*_*kar 2 javascript json angularjs

我在angular $ resource中遇到以下错误: 错误说明

Error: error:badcfg
Response does not match configured parameter:
Error in resource configuration for action `array`. Expected response to contain an object but got an {2}
Run Code Online (Sandbox Code Playgroud)

我按如下方式初始化了ng app:

var appRoot = angular.module('smapp', ['ngRoute', 'ui.bootstrap', 'ngResource']);
Run Code Online (Sandbox Code Playgroud)

服务:

appRoot.factory('ProgramsResource', function ($resource) {
    return $resource('Home/Program', {}, { Program: { method: 'get', isArray: false } })
});
Run Code Online (Sandbox Code Playgroud)

在我的控制器中:

appRoot.controller('ProgramCtrl', function ($scope, ProgramsResource) {
    $scope.searchPrograms = function () {
        $scope.Programs = ProgramsResource.query(
            {
                TotalItems: $scope.TotalItems,
                ItemsPerPage: $scope.ItemsPerPage,
                PageNo: $scope.CurrentPage
            });
    };


    $scope.TotalItems = 175;
    $scope.ItemsPerPage = 20;
    $scope.CurrentPage = 1;
    $scope.searchPrograms();
});
Run Code Online (Sandbox Code Playgroud)

Json我从服务器发送响应:

{"TotalItems":175,"ItemsPerPage":20,"PageNo":5,"List":[{"Code":"MATH2014","Name":"Name1","Tags":"Tag1,Tag2"},{"Code":"MATH2015","Name":"Name2","Tags":"Tag1,Tag2"}]}
Run Code Online (Sandbox Code Playgroud)

对于json,angular $ response会抛出错误

但是如果我不在json中发送"List"数组并按如下方式发送简单的json,那么一切正常:

[{"TotalItems":0,"ItemsPerPage":0,"PageNo":0},{"TotalItems":0,"ItemsPerPage":0,"PageNo":0}}]
Run Code Online (Sandbox Code Playgroud)

我是棱角分明的新人,不知道我到底做错了什么.

Cha*_*ani 7

而不是做

$scope.Programs = ProgramsResource.query(

使用

$scope.Programs = ProgramsResource.get(

queryfunction期望响应成为一个数组,而get期望一个对象.因为你正在返回对象使用get.

查询功能的默认设置是isArray:true.此标志有助于角度将您的响应反序列化为对象或数组.请参阅资源文档.

另请注意: 更改以下查询功能的默认设置时,如果未定义isArray为,则会遇到此错误true.因此,isArray: true在更改默认设置时始终添加query:

var res = $resource('/api/userinfoes/:Id', { Id: "@Id" },
            {
                'query':  {
                        method:'GET',
                        headers: {
                             'Authorization': 'Bearer ' + token
                        },
                        isArray:true}
            });
Run Code Online (Sandbox Code Playgroud)