没有方法拼接问题

时间:2014-02-15 01:09:47

标签: javascript angularjs

我有一个角度js应用程序,我正在尝试有一个列出所有产品的页面。它从一个给我的网址返回:

{
  "products": [
  {
     "id":14,
     "name":"Test",
     "tags":[]
  }]
}

我有一个部分看起来像:

<li ng-repeat="product in products.products | filter:searchProducts">
  <a>{{product.name}}</a>
  <a ng-click="deleteProduct(product.id, $index)">Delete</a>
</li>

和一个看起来像的控制器:

app.controller('ProductsCtrl', ['$scope', 'Api', function($scope, Api) {
   $scope.products = Api.Product.query();

   //Delete Product
   $scope.deleteProduct = function(productId, idx) {
        Api.Product.remove({productId: productId});
        $scope.products.splice(idx, 1);
   };

}]);

和Api工厂看起来像:

app.factory('Api', ['$resource', function($resource) {
   return {
       Product: $resource('/api/products/:productId', {productId: '@productId'}, {'query': {method: 'GET', isArray: false }}),
       Item:  $resource('/api/items/:itemId', {itemId: '@itemId'})
   };
}]);

当我点击删除链接时,它会从后端删除产品,但它会说:

TypeError: Object #<Resource> has no method 'splice'

1 个答案:

答案 0 :(得分:1)

我认为你想使用$scope.products.products.splice()。这是因为您要将资源对象分配给$scope.products,其中包含子产品密钥的数组。