Angularjs资源对象a.push不是函数

Angularjs资源对象a.push不是函数,angularjs,angularjs-resource,Angularjs,Angularjs Resource,我已创建一个资源对象: factory('TextResource', function($resource) { return $resource(adminBaseUrl+'/texts/:type', {}, { create: {method: 'POST', params: {type:'create'}, headers: {'Content-Type':'application/x-www-form-urlencoded'}},

我已创建一个资源对象:

factory('TextResource', 
    function($resource) {
        return $resource(adminBaseUrl+'/texts/:type', {}, {
            create: {method: 'POST', params: {type:'create'}, headers: {'Content-Type':'application/x-www-form-urlencoded'}},
            update: {method: 'POST', params: {type:'update'}, headers: {'Content-Type':'application/x-www-form-urlencoded'}},
            query: {method: 'GET', params: {type: 'list'}},
            remove: {method: 'POST', params: {type: 'remove'}, headers: {'Content-Type':'application/x-www-form-urlencoded'}},
            getText: {method: 'GET', params: {type: 'get', id:'@id'}}
        });
    }
)
我的控制器是:

controller('EditText', ['$scope', '$location', '$routeParams', 'TextResource', 'HttpStatusMessage',
    function($scope, $location, $routeParams, TextResource, HttpStatusMessage) {
        $scope.alerts = [];
        $scope.languages = [];

        TextResource.getText(
            {id: $routeParams.id},
            function(data) {
                $scope.languages = data.result;
            },
            function(error) {
                var httpError = new HttpStatusMessage(error.status);
                $scope.alerts.push({type:'error', msg:httpError.msg});
            });

        $scope.closeAlert = function(index) {
            $scope.alerts.splice(index, 1);
        }

        $scope.submit = function() {
            TextResource.update(
                $scope.languages,
                function(data) {
                    if( data.type == 'success' ) {
                        $location.path('texts');
                    } else {
                        $scope.alerts.push({type:data.type, msg:data.message});
                    }
                },
                function(error) {
                    var httpError = new HttpStatusMessage(error.status);
                    $scope.alerts.push({type:'error', msg:httpError.msg});
                });
        }

        $scope.cancel = function() {
            $location.path('texts');
        }
    }
])
我从TextResource.getText请求得到的响应是:

{"result":[{"id":"3","value":"This is my first text<br>","key":"my_first_text","language_id":"1","name":"English"},{"id":"3","value":"Ceci est mon premier texte","key":"my_first_text","language_id":"3","name":"French"}],"num_rows":2}

响应对象包含两个键结果,num_rows结果是一个数组。我不在资源对象中使用isArray参数的原因是,如果服务器中出现任何错误,如会话超时、不允许访问等。服务器返回的对象包含错误消息。

通过修改更新函数解决了此问题,如:

$scope.submit = function() {
            TextResource.update(
                {'language':$scope.languages},
                function(data) {
                    if( data.type == 'success' ) {
                        $location.path('texts');
                    } else {
                        $scope.alerts.push({type:data.type, msg:data.message});
                    }
                },
                function(error) {
                    var httpError = new HttpStatusMessage(error.status);
                    $scope.alerts.push({type:'error', msg:httpError.msg});
                });
        }

我在更新中直接发布了一个数组,它抛出了错误。因此,封装在另一个键中解决了问题。

在“a.push”所在的位置搜索您的代码?a.push是用angularjs文件编写的。我可以看到您的操作中没有一个定义了“isArray”,您是否尝试过设置它。isArray–{boolean=}–如果为true,则此操作返回的对象是数组,请参阅“返回”部分。
$scope.submit = function() {
            TextResource.update(
                {'language':$scope.languages},
                function(data) {
                    if( data.type == 'success' ) {
                        $location.path('texts');
                    } else {
                        $scope.alerts.push({type:data.type, msg:data.message});
                    }
                },
                function(error) {
                    var httpError = new HttpStatusMessage(error.status);
                    $scope.alerts.push({type:'error', msg:httpError.msg});
                });
        }