我有一个角度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'
答案 0 :(得分:1)
我认为你想使用$scope.products.products.splice()
。这是因为您要将资源对象分配给$scope.products
,其中包含子产品密钥的数组。