Nó có thể không phải là một cách dễ dàng nhưng tôi nghĩ cách tốt nhất là sử dụng url và đặt nó là một chức năng như thế này:
var Transaction = Backbone.Model.extend({
url: function(){
var url = 'accounts/"+this.account_id+"/transactions';
if (this.id !== undefined){
url += "/"+this.id
}
return url;
}
});
Hoặc có thể bằng coffeescript (vì nó là backb một + đường ray):
class Transaction extends Backbone.Model
url: ->
url = "accounts/#{@account_id}/transactions"
url += "/#{@id}" if @id != undefined
url
Oh và bạn có thể làm điều đó như thế này (chắc chắn với tổ sâu hơn nó tốt hơn):
var url = ["accounts", this.account_id, "transactions"]
if (this.id !== undefined) url.push(this.id)
return url.join("/")
AFAIK hiện nay là tiện ích url trong xương sống , và nó không phải nhiều đau đớn đủ cho tôi vì vậy mà tôi sẽ tìm kiếm một trong một số thư viện khác :)
Nguồn
2011-11-30 20:58:23
Điều này hoạt động tốt cho các mô hình hiện có được tải từ chương trình phụ trợ thông qua cuộc gọi tìm nạp. Nhưng những gì về một mô hình mà tôi vừa tạo ra? Khi phương thức khởi tạo được gọi, cuộc gọi ajax tạo bản ghi trong phần phụ trợ chưa hoàn thành và trường 'this.id' này là' undefined'. Bất kỳ ý tưởng về cách đối phó với điều này? – Ernesto
Một cách để xử lý việc tạo url cho các mô hình vừa được tạo ra là làm cho url trở thành một hàm thay vì một chuỗi. Vì vậy, dòng trên có thể được thay đổi thành: 'this.transactions.url = function() {return '/ account /' + this.id + '/ transactions'};' – stereoscott