【问题标题】:Not able to post data angular ng-resource无法发布数据角度 ng-resource
【发布时间】:2015-06-04 21:49:21
【问题描述】:

我想通过 angular ngResource 使用 post 方法来持久化数据。 我已经为该过程编写了以下代码。但是,当我试图坚持 错误来了。

JS 代码

angular.module('app').factory("testService", function($resource) {
return{ 
    addCount: $resource('/save/count',{method:'POST',params:{ date: '@date',
                    count: '@count'}}
        )
};
});

//控制器代码

$scope.add = function(){
testService.addCount().get({ date: new     Date(formattedDate).toString("MM/dd/yyyy"),
            count: count},function(response){
                console.log('success')

        });};

一旦我从我的 html 中单击 add(),我就会收到以下错误。 TypeError:无法读取未定义的属性“get”

请提供解决此问题的建议

【问题讨论】:

  • 您是否在控制器中正确注入服务?
  • 试试 testService.addCount.get(....
  • 是的,我注射了@chris
  • 您没有正确使用 $resource。 'save': {method:'POST'}, 根据文档,如果要发布,应使用方法save
  • 还有testService.addCount()不要把它作为函数调用,返回一个对象

标签: javascript angularjs


【解决方案1】:

RESTful 服务应该基于每个实体。所以你的路由应该只是 /Countapi/Count 取决于你如何设置你的 API 端点。

然后当您使用$resource 时,只需将其指向您的端点并让$resource 处理发布等。

$resource 遵循 HTTP 动词背后的含义。所以GET 应该得到一些数据,POST 应该保存数据,PUT 应该更新,DELETE 应该删除等等。

$scope.add = function(){
    var Count = $resource('/count');
    Count.save({
         date: new Date(formattedDate).toString("MM/dd/yyyy"),
         count: count
    }, function() {
        // success
    });
};

这就是我如何看待自己使用$resource。您始终可以将 Count 的创建抽象到您创建的服务中。


$资源

Link

所以当你调用$resource('some/route'); 时,它会返回一个包含这些方法的对象:

{ 'get':    {method:'GET'},
  'save':   {method:'POST'},
  'query':  {method:'GET', isArray:true},
  'remove': {method:'DELETE'},
  'delete': {method:'DELETE'} };

如您所见,savePOST 方法。因此,要调用它,您可以参考$resource('some/route');,例如:

var Count = $resource('some/route');

然后你调用一个方法。

对于 HTTP GET “类”操作:Resource.action([parameters], [成功],[错误])

对于非 GET “类”操作:Resource.action([parameters], postData, [成功],[错误])

对于非 GET 实例操作:instance.$action([parameters], [成功],[错误])

据我了解,类表示引用Count,实例表示您的类何时执行并且您已收到对象。这个对象是instance

【讨论】:

  • 我试过了,现在 url 正在形成。但是,我在控制台中收到了错误的请求。 ** POST localhost:8080/… 400(错误请求)**
  • 表示你的API后端拒绝请求,你的后端是用什么写的?
  • 不,请检查我发布的请求,我从控制器传递的动态值没有绑定到 URL
  • 这是你放在http://localhost:8080/count?method=POST&params=%7B%22date%22:%22@date%22,%22count%22:%22@count%22%7D的链接
  • 是的,这就是网址
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多