Backbone modèle.save() est l'envoi de METTRE à la place de la POSTE
J'appelle enregistrer à l'aide de ceci:
console.log(this.model.isNew());
console.log(this.model);
this.model.save({}, {
success: function (model, response, options) {
console.log(response);
},
error: function (model, xhr, options) {
console.log(xhr.result.Errors);
}
});
La isNew()
renvoie la valeur false. Mais la sortie de this.model
a un ID de 0. (ce.de modèle.l'id est 0 aussi)
Mon url est url: ROOTAREA + "/Expenses/Entry/",
La mise à jour fonctionne très bien, et les utilisations comme prévu.
Edit : voici une partie de mon modèle:
defaults: function () {
return {
DocumentDate: "",
JobNo_: "",
PhaseCode: "",
WorkTypeCode: "",
Description: "",
Quantity: 0,
UnitCost: 0,
ExpenseCurrencyCode: "",
ReimbursementCurrencyCode: "",
UnitofMeasureCode: "DIEM",
LineNo_: 0
};
},
idAttribute: "LineNo_",
Vous devez vous connecter pour publier un commentaire.
ID ne devrait même pas exister pour une nouvelle entrée.
Le problème est dans la partie que vous n'avez pas se présenter dans la partie où vous l'instancier, de créer et d'alimenter le modèle.
Voici une citation de l'épine Dorsale de la documentation:
Il est clair à partir de votre code que vous avez de l'affectation d'un attribut id.
Votre backend doit être faire cela.
Et puisque vous êtes de le faire sur un client, de la colonne vertébrale suppose, n'est pas nouvelle, et utilise
PUT
Les réponses ci-dessus sont correctes que si le
model
vous.save
'ing a uneid
attribut épine dorsale va faire unPUT
plutôt qu'unPOST
.Ce comportement peut être remplacée simplement par l'ajout de
type: 'POST'
à votre bloc de sauvegarde:Vous pouvez spécifier l'ID par défaut, assurez-vous juste qu'il est défini à
null
(isNew est définie à true).Dans votre cas, il doit être