【问题标题】:$resource delete method doesn't work right$resource 删除方法无法正常工作
【发布时间】:2016-04-26 13:46:41
【问题描述】:

我正在学习 Angluarjs 的 $resource。我在 HTML 上设置了一个按钮,用于从 json 文件中删除一条记录,并希望从 testForm.json 文件中删除一条记录。不幸的是,我没有这样做,无法解决问题。

代码在这里:my Angularjs code 控制器代码中的删除函数如下所示

$scope.deleteRecord = function () {
            var id = 1;
            var arecord = new singleResource();
            arecord.$get({userId:id},function () {
                $log.info(arecord);
                arecord.$delete();
            });

删除功能的HTML部分如下所示:

<div class="form-group">
        <div class="col-sm-6 col-sm-push-2">
          <button type="button" class="btn btn-primary" ng-click="deleteRecord()">Delete information</button>
        </div>
      </div>

“$scope.deleteRecord”是点击删除信息按钮时,删除json文件中id=1的记录的功能。错误说:“DELETE http://localhost:3000/contactInfo 404(未找到):3000/contactInfo:1”,而“arecord”在日志中显示为对象“m {电子邮件:“333@333”,密码:321, method: "Internet", id: 1, $promise: undefined…}",应该没问题。

【问题讨论】:

  • 我想这是错误的动词

标签: javascript angularjs json


【解决方案1】:

$http

$http.get('/someUrl', config).then(successCallback, errorCallback);

$http.post('/someUrl', data, config).then(successCallback, errorCallback);

$http 内置于 Angular 中,因此无需额外的加载外部依赖项的开销。 $http 适合快速 检索实际上不需要任何特定的服务器端数据 结构或复杂的行为。最好直接注入 为简单起见,放入您的控制器中。

$resource

类对象或实例对象的动作方法可以通过以下参数调用:

HTTP GET“类”操作:Resource.action([parameters], [success], [error])

非 GET “类”操作:Resource.action([parameters], postData, [success], [error])

$resouce 适用于比 $http 稍微复杂一些的情况。当你有相当结构化的数据时很好,但是你 计划完成大部分工作、人际关系和其他操作 在传递 API 响应之前在服务器端。 $资源 一旦你将数据输入到你的 JavaScript 中,就不会让你做太多事情 应用程序,因此您应该将其以最终状态交付给应用程序并制作 更多 REST 调用,当您需要从一个 不同的角度。

您也可以使用:restangular https://github.com/mgonto/restangular

Restangular 是客户端复杂操作的完美选择。它使您可以轻松附加自定义行为并进行交互 以与您使用的其他模型范例大致相同的方式处理您的数据 过去用过。

Angularjs 指南:https://docs.angularjs.org/api/ng/service/$http#delete

尝试删除方法:

$scope.deleteRecord = function () {
            var id = 1;
            var arecord = new singleResource();
            arecord.$delete({userId:id},function () {
                $log.info(arecord);
                //arecord.$delete();
            });

$http({
  method: 'DELETE',
  url: '/someUrl'
}).then(function successCallback(response) {
    // this callback will be called asynchronously
    // when the response is available
  }, function errorCallback(response) {
    // called asynchronously if an error occurs
    // or server returns response with an error status.
  });

希望对你有帮助。

【讨论】:

  • 非常感谢您的回答。另一个让我困惑的问题是,什么时候使用 $http 服务,什么时候使用 $resource 服务与服务器端通信?或者哪个更好? $resource服务在使用时是否需要successCallback和errorCallback函数?
猜你喜欢
  • 2011-06-14
  • 2012-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多