$ Risorsa è stata intesa a recuperare i dati da un’estremità, manipolare e inviare nuovamente. Hai alcuni di quelli che ci sono, ma non hai davvero vantaggio di ciò che è stato fatto da fare.
È bello avere metodi personalizzati nella tua risorsa, ma non vuoi perdere funzionalità interessanti è che arriva con Ootb.
Modifica: Penso di non averlo spiegato bene come l’originale, ma $ risorsa di alcune cose divertenti con i ritorni. ALL.GET () e ALL.QUERY () entrambi restituiscono l’oggetto risorsa e trasferirlo alla richiamata quando è completa. Fa alcune cose fantastiche con promesse dietro le quinte che significa che puoi chiamare $ salvare () prima del ricevimento () di callback effettivamente incendio, e cosa aspetterà. Probabilmente è il modo migliore per affrontare le sue risorse all’interno di una promessa () o del metodo di callback.
norma di utilizzo
var Todo = $resource('/api/1/todo/:id');//create a todovar todo1 = new Todo();todo1.foo = 'bar';todo1.something = 123;todo1.$save();//get and update a todovar todo2 = Todo.get({id: 123});todo2.foo += '!';todo2.$save();//which is basically the same as...Todo.get({id: 123}, function(todo) { todo.foo += '!'; todo.$save();});//get a list of todosTodo.query(function(todos) { //do something with todos angular.forEach(todos, function(todo) { todo.foo += ' something'; todo.$save(); });});//delete a todoTodo.$delete({id: 123});
Allo stesso modo, nel caso in cui ciò che hai pubblicato nell’OP, è possibile ottenere un oggetto risorsa, quindi chiamare qualsiasi delle tue funzioni personalizzate (in teoria):
var something = src.GetTodo({id: 123});something.foo = 'hi there';something.UpdateTodo();
Vorrei sperimentare l’applicazione OOTB prima di partire e il mio è stato inventato comunque. E se trovi che non si utilizza alcuna delle funzionalità predefinite di $ risorsa, dovresti probabilmente usare $ http in cui è proprio.
Aggiornamento: Angular 1.2 e promesse
Come angolare, 1.2, promette risorse di supporto. Ma non cambiare il resto del comportamento.
Per sfruttare le promesse $resource
, è necessario utilizzare $promise
del Proprietà nel valore restituito.
Esempio di utilizzo delle promesse
var Todo = $resource('/api/1/todo/:id');Todo.get({id: 123}).$promise.then(function(todo) { // success $scope.todos = todos;}, function(errResponse) { // fail});Todo.query().$promise.then(function(todos) { // success $scope.todos = todos;}, function(errResponse) { // fail});
Tieni presente che la proprietà $ Promise è una proprietà gli stessi valori che sono tornati. Puoi ottenere così strano:
questi sono equivalenti
var todo = Todo.get({id: 123}, function() { $scope.todo = todo;});Todo.get({id: 123}, function(todo) { $scope.todo = todo;});Todo.get({id: 123}).$promise.then(function(todo) { $scope.todo = todo;});var todo = Todo.get({id: 123});todo.$promise.then(function() { $scope.todo = todo;});