Tôi có Backbone.Model có tên Company
. Mô hình Company
của tôi có Employees
Backbone.Collection có chứa các mô hình Employee
.Làm cách nào để chuyển các thuộc tính vào Backbone.Model mà tôi không muốn được coi là thuộc tính?
Khi tôi nhanh chóng mô hình Employee
để điền vào bộ sưu tập Employees
Tôi muốn chúng có tham chiếu đến số Company
chúng thuộc về. Nhưng khi tôi vượt qua Company
, nó trở thành một trong các thuộc tính của Employee
. Đây là vấn đề khi tôi đi để lưu Employee
vì phương pháp toJSON
sẽ chứa đối tượng Company
, khi trong cơ sở dữ liệu tôi lưu trữ là số nguyên khóa ngoài company_id
.
Tôi muốn có tham số thứ hai cho Backbone.Model chấp nhận các thuộc tính mô hình không phải là một phần của thuộc tính cốt lõi. Làm sao để tôi có được xung quanh này? Tôi nhận ra rằng tôi có thể tạo ra các mô hình Employee
của mình và sau đó đính kèm Company
, nhưng tôi thực sự muốn thực hiện tất cả các nhiệm vụ trong một "hàm tạo" truyền thống hơn là gắn các thuộc tính từ bên ngoài.
ví dụ .:
Employee = Backbone.Model.extend({});
Employees = Backbone.Collection.extend({
model: Employee
});
Company = Backbone.Model.extend({
initialize: function() {
this.employees = new Employees({});
}
});
c1 = new Company({id: 1});
e = new Employee({name: 'Joe', company_id: 1, company: c1});
c1.employees.add(e);
e.get('company'); // => c1
e.save(); // BAD -- attempts to save the 'company' attribute, when in reality I only want to save name and company_id
//I could do
c2 = new Company({id: 2});
e2 = new Employee({name: 'Jane', company_id: 2});
e2.company = c2;
c2.employees.add(e);
e.company; // => c2
//I don't like this second method because the company property is set externally and I'd have to know it was being set everywhere in the code since the Employee model does not have any way to guarantee it exists
Backbone.Model cho thấy nó chỉ chấp nhận một mảng thuộc tính duy nhất ở đây: http://documentcloud.github.com/backbone/#Model-constructor Tôi bị cám dỗ để thử Backbone quan hệ nhưng vì Backbone bản thân vẫn đang thay đổi Tôi e ngại đầu tư vào các phần mở rộng có thể không theo kịp sự phát triển nhanh chóng của Backbone. –
Nhưng tôi thấy khi tìm kiếm mã mà hàm khởi tạo Backbone.Model thực hiện cả thuộc tính và tùy chọn. Lỗi của tôi. –
Tài liệu không được cập nhật. Xem [constructor source] (https://github.com/documentcloud/backbone/blob/master/backbone.js#L132) – shesek