Json angularjs$资源服务类型错误:未定义不是函数

Json angularjs$资源服务类型错误:未定义不是函数,json,angularjs,resources,Json,Angularjs,Resources,我是AngularJS的新手,我觉得解决这个问题可能很简单,我会觉得自己很笨,但我已经试着看这个/搜索几个小时了。我知道问题是从哪里来的,但我不确定如何解决它 我让一切正常工作,然后我在后端进行了修改,让查询调用返回额外的数据。我用default query()方法尝试了这两种方法,并在$resource服务中配置了一个新的自定义方法,还使用了transformResponse .factory('apiEntry', function($resource, apiUrl) { return

我是AngularJS的新手,我觉得解决这个问题可能很简单,我会觉得自己很笨,但我已经试着看这个/搜索几个小时了。我知道问题是从哪里来的,但我不确定如何解决它

我让一切正常工作,然后我在后端进行了修改,让查询调用返回额外的数据。我用default query()方法尝试了这两种方法,并在$resource服务中配置了一个新的自定义方法,还使用了transformResponse

.factory('apiEntry', function($resource, apiUrl) {
  return { 
   api: function(url) {
    return $resource(apiUrl + url + "/:id", { id: "@id" },
        { create: { method: "POST" }, save: { method: "PUT" },
         saveBulk: { method: "PUT", isArray: true }, queryAll: { method: "GET", 
         transformResponse: function(data, headers) {
            var data = angular.fromJson(data);
            return { data: data[0], counter: data[1], stats: data[2] }
         } }

 }
}
})
然后

查询、返回数据和解析承诺都可以很好地工作。我可以用dataRest.data等填充视图,但对其调用$save()或$delete()会导致此错误

例如:

$scope.deleteItem = function(item) {
        console.log(item);
        item.$delete().then(function() {
            $scope.dataRest.data.splice($scope.dataRest.data.indexOf(item), 1);
        });
    }
错误:

TypeError: undefined is not a function

我不确定Angularjs所期望的数据结构到底是什么。当前,资源对象是一个属性包含原始数据的对象。我不太确定如何从这里开始。我认为,如果可能的话,最好是在Angularjs内部处理。我还可以尝试在返回响应之前在后端重新格式化它,或者通过单独的API调用获取响应。我希望我说得有点道理,我是新手,到目前为止,我已经能够通过测试或四处搜索来解决我的问题。

在您的工厂,我看到了一些方法,但没有一种方法被命名为
删除
?我还没有使用
$
操作符,因此您这样做可能是正确的。我将粘贴一个我的代码示例

(function () {
'use strict';

angular
    .module('API')
        .factory('Factory', function ($resource) {
            return $resource("/REST ROUTE", {},
                {                   
                    save: {
                        method: "POST",
                        cache: true,
                        isArray: false
                    }
                }
            );
        });
})();
我总是尝试将api分成几个小部分,因此您必须向控制器中注入工厂并像这样使用它

$scope.Function = function(){
    Factory.save({user:user});
}

如果您想添加更多功能,我建议您在控制器函数中添加,或者如果您在少数地方需要它,那么我只是从工厂返回函数,但没有将它与REST数据上的一些操作结合起来,但是,也许您可以将一个工厂注入另一个工厂?

您可以演示如何在工厂中定义保存和删除吗?你的服务器POST/PUL在POST中的表现如何。在过去的一天里,我一直在看Restanglar,可能会完全转换,但如果知道我缺少什么,我还是会很高兴的。谢谢你的回复,并尝试帮助我!我相信$resource服务的$delete()、$save()、$get()如果没有定义,将只是默认设置。在后端返回的数据被更改之前,他们可以很好地处理资源对象,所以请相信问题就在这里。分解它可能会使测试更容易,更干净的东西可能不是我在这个阶段应该担心的事情,呵呵。现在切换到Restanglar,因为它似乎更高级,我现在面临的是一个新问题。。。
$scope.Function = function(){
    Factory.save({user:user});
}