non potrebbe essere un modo semplice, ma penso che il modo migliore è quello di utilizzare l'URL e impostarlo su una funzione così:
var Transaction = Backbone.Model.extend({
url: function(){
var url = 'accounts/"+this.account_id+"/transactions';
if (this.id !== undefined){
url += "/"+this.id
}
return url;
}
});
O forse in coffeescript (come è backb uno + rotaie):
class Transaction extends Backbone.Model
url: ->
url = "accounts/#{@account_id}/transactions"
url += "/#{@id}" if @id != undefined
url
Oh, e si potrebbe fare di più in questo modo (sicuramente con nidificazione più profondo è meglio):
var url = ["accounts", this.account_id, "transactions"]
if (this.id !== undefined) url.push(this.id)
return url.join("/")
mi risulta, c'è ora di utilità url nella spina dorsale , e non è abbastanza dolore per me, quindi ne cercherò uno in qualche altra libreria :)
fonte
2011-11-30 20:58:23
Funziona bene per i modelli esistenti caricati dal back-end tramite una chiamata fetch. Ma che dire di un modello che ho appena creato? Quando viene chiamato il metodo di inizializzazione, la chiamata ajax che crea il record nel backend non è terminata e il campo 'this.id' è' indefinito'. Qualche idea su come far fronte a questo? – Ernesto
Un modo per gestire la generazione di URL per i modelli appena creati consiste nel rendere l'url una funzione piuttosto che una stringa. Quindi, la riga precedente potrebbe essere cambiata in: 'this.transactions.url = function() {return '/ account /' + this.id + '/ transactions'};' – stereoscott