Der Vorschlag von ricick ist gut, aber wenn man eine Methode auf dem Array haben wollen, um tatsächlich die zurückgibt, werden Sie eine härtere Zeit zu tun, dass haben. Was Sie tun müssen, ist ein Wrapper um $ ressource und seine Instanzen zu erstellen. Das Problem, das Sie in dem Run ist diese Codezeile aus Winkel resource.js:
var value = this instanceof Resource ? this : (action.isArray ? [] : new Resource(data));
Hier wird der Rückgabewert von $ Ressource eingerichtet ist. Was passiert, ist "Wert" wird ausgefüllt und zurückgegeben, während die Ajax-Anfrage ausgeführt wird. Wenn die Ajax-Anforderung abgeschlossen ist, wird der Wert in "Wert" oberhalb, aber durch Referenz (mithilfe der angle.copy() -Methode) zurückgegeben. Jedes Element des Arrays (für eine Methode wie query()) ist eine Instanz der Ressource, auf der Sie arbeiten.
So eine Art und Weise Sie diese Funktionalität erweitern könnte, wäre so etwas wie dieses (nicht getesteten Code, so wird wahrscheinlich ohne einige Anpassungen nicht) sein:
var myModule = angular.module('myModule', ['ngResource']);
myModule.factory('Book', function($resource) {
var service = $resource('/authors/:authorId/books'),
origQuery = service.prototype.$query;
service.prototype.$query = function (a1, a2, a3) {
var returnData = origQuery.call(this, a1, a2, a3);
returnData.myCustomMethod = function() {
// Create your custom method here...
return returnData;
}
}
return service;
});
Wieder Sie damit zu verwirren haben eine bisschen, aber das ist die Grundidee.
Sehen Sie, ob dies [$ Ressourcenbeziehungen in Angular.js] (http://stackoverflow.com/questions/9981090/resource-relations-in-angular-js) hilft. – Stewie