Tôi khá mới đối với Backbone và có câu hỏi sau:Mô hình thay đổi xương sống của View
Tôi có một bộ sưu tập mô hình.
Tôi có chế độ xem bộ sưu tập hiển thị các tab (với chế độ xem cho từng mô hình trong bộ sưu tập).
Tôi có chế độ xem cho mô hình (đối với nội dung).
Tôi có bộ định tuyến có tuyến đường.
Những gì tôi đang cố gắng để đạt được là một chức năng như http://jqueryui.com/demos/tabs/
tôi bấm vào một tab (mô hình của bộ sưu tập) và sau đó muốn vượt qua các mô hình để xem nội dung có thể thay đổi nó và phản ánh những thay đổi trong bộ sưu tập .
tôi đã đưa ra bốn giải pháp:
Trong router:
'switchCommunity': function(id) {
// (a) set new model attributes
this.view.community.model.set(communities.get(id));
// (b) replace model
this.view.community.model = communities.get(id);
// (c) a custom function of the view changes its model
this.view.community.changeModel(communities.get(id));
// (d) a new view
this.view.community = new View({
model: communities.get(id)
})
}
Vấn đề ở đây là
(a) không phản ánh những thay đổi trong mô hình trong bộ sưu tập
(b) không kích hoạt (thay đổi) sự kiện, vì ràng buộc trong hàm initialize của quan điểm không bao giờ gây nên, bởi vì nó là một mô hình hoàn toàn mới
(c) có vẻ giống như một hack với tôi
(d) mọi i click vào một tab mà chế độ xem mới được tạo (đây có phải là một sự cố về hiệu suất không?)
Tốt nhất ở đây là gì?
Tôi sẽ thử (d) - điều này không trở thành vấn đề hiệu suất nếu bạn xóa chế độ xem cũ trước. – swatkins
in (d) Tôi ghi đè lên this.view.community của tôi là đủ hoặc tôi có phải loại bỏ nó bằng tay? – Riebel
Điều này sẽ là đủ, miễn là các yếu tố dom cũ không treo xung quanh và có người nghe sự kiện ràng buộc với họ, họ nên được thu gom rác thải. Tôi muốn xác minh với firebug, nhưng tôi nghĩ rằng đó là chính xác. – swatkins