Nach Restangular https://github.com/mgonto/restangular#restangular-methods sie erwähnen, dass Sie das ursprüngliche Element verwenden sollten, und eine Aktion mit, so in Ihrem HTML-Code ausführen sollten Sie:
<li ng-repeat="product in products">
<a href="#" ng-click="delete(product)"></a>
</li>
Dann in Ihrem Controller:
$scope.delete = function(product) {
product.remove().then(function() {
// edited: a better solution, suggested by Restangular themselves
// since previously _.without() could leave you with an empty non-restangular array
// see https://github.com/mgonto/restangular#removing-an-element-from-a-collection-keeping-the-collection-restangularized
var index = $scope.products.indexOf(product);
if (index > -1) $scope.products.splice(index, 1);
});
};
Beachten Sie, dass sie die underscore.js ohne verwenden, die das Element aus dem Array entfernen wird. Ich denke, wenn sie dieses Beispiel auf ihrer Readme-Seite posten, bedeutet das, dass die Funktion .remove()
das Originalelement nicht aus der Sammlung entfernt. Dies ist sinnvoll, da nicht alle Objekte, die Sie entfernen, aus der Sammlung entfernt werden sollen.
Was passiert auch, wenn die DELETE $HTTP
Anfrage fehlschlägt? Sie möchten das Element dann nicht entfernen, und Sie müssen sicherstellen, dass dieses Problem in Ihrem Code behandelt wird.
Können Sie den Code einchecken, wenn Artikel aus '$ scope.products' Sammlung entfernt wird? – Chandermani
ist es nicht. Ich denke, dass ich sowohl von der Ressource als auch von den scope.products löschen muss. Ich schätze, ich suche nach einer Möglichkeit, das nicht tun zu müssen - aber vielleicht nicht. – cyberwombat
Sie können immer die restangular Quelle ansehen und verifizieren :) – Chandermani