Từ hiểu biết của tôi, hành vi mặc định của Mô hình cột sống JS là trả về URL của Bộ sưu tập, trừ khi mô hình có chỉ định urlRoot
. Tôi không thể có được hành vi để làm việc.BackboneJS model.url bằng cách sử dụng collection.url
Từ các tài liệu:
model.url() ... Tạo URL có dạng: "[collection.url]/[id]" theo mặc định, nhưng bạn có thể ghi đè lên bằng cách xác định một rõ ràng urlRoot nếu bộ sưu tập của mô hình không được tính đến.
Dưới đây là bộ sưu tập của tôi, và mô hình tương ứng:
var MyCollection = Backbone.Collection.extend({
model: Model,
initialize: function(options){
this.options = options || {};
},
url: function(){
return "/theurl/" + this.options.param;
}
});
return MyCollection;
...
var MyModel = Backbone.Model.extend({
urlRoot: '/theurl',
initialize: function() {
}
});
return MyModel;
Khi một mô hình được nạp mà không có một bộ sưu tập, nó hoạt động tuyệt vời và nộp để /theurl
, nhưng khi được tải vào bộ sưu tập, tất cả các phương thức sẽ gửi đến /theurl/param/
.
Nếu tôi hiểu tài liệu chính xác, thì urlRoot
của Mô hình sẽ ghi đè hành vi này; và thậm chí sau đó url của mô hình phải là /theurl/param/{MODEL-ID}
.
Bất kỳ ý tưởng nào về những gì tôi thiếu/hiểu lầm?
...
PS: Các model: Model
từ bộ sưu tập được đưa vào qua RequireJS
Cảm ơn cho câu trả lời. Tài liệu có vẻ siêu mơ hồ ở đó. Bất kỳ ý tưởng nào về lý do tại sao nó không thêm ID mô hình vào cuối URL thu thập? – caleb
Có một vài điều. Bạn vừa tạo mô hình trên máy khách chưa? Nếu vậy nó sẽ không nhất thiết phải có một id vì nó chưa được lưu vào máy chủ. Trong trường hợp này, nó sẽ chỉ có một cId. – dcarson
Tôi nghĩ rằng điều này thay vào đó nên nói: 'yourModel.save ({}, {url: yourModel.urlRoot});'. Cách nó hiện đang được viết sẽ là 'set' thuộc tính' url' trên đối tượng vì đối số đầu tiên là 'save' là một thuộc tính hash. – flyingL123