Domanda

Quando si chiama $ Salva su un ngresource, è possibile postare solo i campi modificati piuttosto che pubblicare l'intero modello ogni volta?

var User = $resource('http://example.com/user/123/');

User.get(function(user) {
  user.name="John Smith";
  user.$save();
  // What I *want* -> POST: /user/123/ {name:'John Smith'}
  // What currently happens -> POST: /user/123/ {name:'John Smith', age: 72, location: 'New York', noOfChildren: 5}
});
.

È stato utile?

Soluzione

No, non è possibile, almeno non su istanze, vedere http:// docs.angolarjs.org/api/ngresource.$resource

.

[...] I metodi di azione sull'oggetto di classe o l'oggetto istanza possono essere richiamati con quanto segue Parametri:

    .
  • http Ottieni azioni "Classe": Resource.action([parameters], [success], [error])
  • Azioni "Classe" non get: Resource.action([parameters], postData, [success], [error])
  • Azioni di istanza non rettifica: instance.$action([parameters], [success], [error])

Allora, è possibile passare solo i dati da salvare nel metodo di salvataggio "statico", ovvero User.save.Qualcosa del genere:

User.get(function(user)
{
    user.name = 'John Smith';
    User.save({name: user.name});
});
.

Se questo funziona per voi probabilmente dipenderai da ciò che farete con l'istanza user.

Altri suggerimenti

Quando voglio salvare un solo campo, uso il metodo .save() statico, con un callback che prende la risposta da quella e aggiorna l'oggetto locale sul successo:

$scope.saveOneField = function(modelInstance) {
  ModelName.save({
    id: modelInstance.id,
    theField: <some value>
  }, function(response) {
    // If you want to update *all* the latest fields:
    angular.copy(response, modelInstance.data);
    // If you want to update just the one:
    modelInstance.theField = response.data.theField;
  });
};
.

Si presuppone che quando una richiesta di post viene inviata alla risorsa (IE, /modelnames/:id), il server risponde con la versione aggiornata più recente di ModelInStace.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top