Ok, vì vậy tôi có điều hướng và khái niệm về trang tổng quan. Trong bộ định tuyến của tôi khi tôi nhấp vào liên kết điều hướng, tôi đang gọi trên chế độ xem trang tổng quan của mình để đặt tab hoạt động.sử dụng div đơn lẻ làm vùng chứa cho nhiều chế độ xem xương sống mất liên kết sự kiện
Ví dụ:
NAV
<a href="#" class="dashabord_tab" id="widgets">Widgets</a>
<a href="#" class="dashabord_tab" id="Foobars">Foobars</a>
dashboard_container.jst.tpl
<div id="nav"></div>
<div id="current_tab"></div>
DASHABORDVIEW
DashboardView = Backbone.View.extend({
template:JST.dashboard_container,
render: function(){
$(this.el).html(this.template());
},
activateWidgets: function(){
if(!(this.widgets_view)){
this.widgets_view = new WidgetsView();
this.widgets_view.render();
}
$(this.el).find("#current_tab").html(this.widgets_view.el);
},
activateFoobars: function(){
if(!(this.foobars_view)){
this.foobars_view = new FooBarsView();
this.foobars_view.render();
}
$(this.el).find("#current_tab").html(this.foobars_view.el);
}
});
vấn đề:
Vì vậy, lần đầu tiên tôi chuyển sang widgets_tab hoặc foobar_tab tab tải như mong đợi. Tuy nhiên, nếu tôi chuyển sang một tab, hãy chuyển sang tab, sau đó chuyển lại, tất cả các sự kiện trong chế độ xem của tôi sẽ không còn bị ràng buộc nữa. Nhấp, hoevering, không ai trong số các quan điểm bên trong foobars_view ví dụ đều có thể click, hoverable vv
Trong quá khứ, tôi đã thực hiện một wrapper cho mỗi một trong những quan điểm con như vậy:
giải pháp trong quá khứ, pita:
activateFoobars: function(){
$('.tab_wrapper').hide();
if($(this.el).find("#foobars_wrapper").length < 1){
$(this.el).append("<div class='tab_wrapper' id='foobars_wrapper'></div>");
this.foobars_view = new FooBarsView();
$(this.el).find("#foobars_wrapper").html(this.foobars_view.render().el);
}
$('#foobars_wrapper').show();
}
tôi không muốn làm điều đó theo cách tôi chỉ trình bày ở trên, và tôi thực sự thích ý tưởng chỉ cần đặt el của view trong một div active_tab luôn vẫn mở ... Nếu tôi có thể' Tôi làm theo cách tôi muốn, có cách nào khác thay cho cách tôi vừa trình bày ở trên không? Cảm ơn!
rằng hoạt động tuyệt vời trong ví dụ jsfiddle của bạn ... đối với một số lý do, nó không làm việc trong ứng dụng của tôi. Tôi nên lưu ý rằng widgetsview và foobarview đều có chế độ xem con của riêng chúng. Điều đó làm cho một sự khác biệt? – jdkealy
@ jdkealy: Có thể bạn sẽ cần 'delegateEvents' tất cả các con đường xuống khi cuộc gọi' empty' sẽ giết chết ** tất cả ** các ràng buộc sự kiện. Một phương thức (nói 'rebind_all_events') trên các khung nhìn mà các' delegateEvents' cần thiết sẽ có ý nghĩa để giữ cho mọi thứ được đóng gói đúng cách. –
Ahhh, tôi thấy bây giờ, khi tôi đặt trong một cái nhìn đơn giản, nó hoạt động tuyệt vời ... Vâng quan điểm của tôi đi quá sâu Tôi nghĩ rằng để gọi delegateEvents tất cả các con đường xuống chuỗi. Điều này là tốt để biết để tham khảo trong tương lai, nhưng tôi nghĩ rằng tôi sẽ đi với các hiển thị/ẩn hoặc phương pháp bù đắp. Cảm ơn! – jdkealy