【问题标题】:delete an object using resource by id通过 id 使用资源删除对象
【发布时间】:2014-02-28 17:08:38
【问题描述】:

我想删除一个由 id 选择的对象,但是当我按下“删除”时,所有对象都被删除了。

如果我指定Inventory.drop({id: 2} 它可以工作,但使用Inventory.drop({id: '@id'}) 它不会。为什么?

$scope.deleteInv = function () {
    Inventory.drop();
 };

我的模板:

<td><a href="" ng-click="deleteInv()">X</a></td>

这是我的工厂:

app.factory('Inventory', function($resource, $http) {
return $resource('http://someweb.com/api/v1/inventory/:id', {id: '@id'},
    {
        update: {
            method: 'POST',
            params: {id: '@id'},
            isArray: false
        },
        save: {
            method: 'PUT'
        },
        query: {
            method: 'GET',
            params: {id: '@id'},
            isArray: false
        },
        create: {
            method: 'POST'
        },
        drop: {
            method: 'DELETE',
            params: {id: '@id'}
        }
    }
);
});

【问题讨论】:

  • 我不明白,id应该从哪里来?调用Inventory.drop()时不发送参数
  • 不应该来自$resource 吗? {id: '@id'}??我如何为 Inventory 声明 id?
  • 你能创建一个简单的 plunker 吗?我猜你的updatequery 工作正常吗?
  • 东西很多,不知道从哪里开始,你需要什么样的资料?是的,查询工作,创造工作
  • 在 html 中:调用更新和删除的示例。在 js 中:带有主要范围变量的简化 Ctrl。当然还有库存。

标签: angularjs angularjs-resource


【解决方案1】:

因为您的@id 未定义。

您在哪里为其赋值?我想你不会。

所以你需要改变它

params: {id: $scope.YourId}

您需要为$sope.YourId 传递任何值

您还需要在工厂中定义$sope app.factory('Inventory', function($resource, $http,**$scope**) {

【讨论】:

  • 这样的? params: {id: $scope.info.id}?但它显示 $scope 未定义的错误
  • 是的,你需要在这里定义app.factory('Inventory',function($resource, $http,**$scope**) {
  • 它显示未知符号 * 如果我在控制台中删除那些 ** ** 我会得到 Unknown provider: $scopeProvider &lt;- $scope &lt;- Inventory
猜你喜欢
  • 1970-01-01
  • 2011-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-13
相关资源
最近更新 更多