2012-02-12 2 views
5

Tôi đang tìm mô hình tốt nhất để chuyển đổi quan điểm sử dụng backbone.jsxem Switching với xương sống

Hãy nói rằng tôi có một cấu trúc DOM cơ bản như thế này:

<div id="header">Some fixed content</div> 
<div id="mainContainer"></div> 
<div id="footer">Some other content</div> 

Và tôi có hai quan điểm " viewOne "và" viewTwo "mà tôi muốn hiển thị thay thế trong mainContainer.

Router nên một cái gì đó như thế này:

routes: { 
    'one': 'pageOne', 
    'two': 'pageTwo' 
},  
pageOne: function() { 
    viewOne.render(); 
}, 
pageTwo: function(){ 
    viewTwo.render(); 
} 

tôi nên thêm ở đâu hoặc loại bỏ các view.el vào DOM? Mẫu tốt nhất để chuyển đổi giữa các chế độ xem là gì?

Trả lời

6

Tôi sẽ sử dụng chế độ xem cấp cao hơn (được đính kèm với #mainContainer) có trách nhiệm hiển thị (các) chế độ xem con của nó. Từ những gì bạn mô tả, chế độ xem của bạn quá khác nhau để xem xét hiển thị chúng bằng một chế độ xem duy nhất dựa trên một số điều kiện và tôi nghĩ rằng nó luôn sạch sẽ hơn một cây quan hệ phân cấp, để hiển thị toàn bộ trang về cơ bản là cấp độ xem của .render() (mà đại biểu cho trẻ em).

Chế độ xem cấp độ liên kết chính của bạn có thể hiển thị hai hàm, nói renderPageOne và renderPageTwo và đó là tất cả các bộ định tuyến cần biết. Bên trong các hàm này, bạn có thể theo dõi chế độ xem con để hiển thị và gọi this.render() để xóa nội dung hiện tại (sử dụng jQuery .empty() trên thanh công cụ chính) và chèn phần tử đầu tiên của khung nhìn chính xác (.el).

+3

Tôi đồng ý với ý tưởng về câu trả lời này, nhưng tôi sẽ không sử dụng Chế độ xem xương sống cho điều này. Tôi đã viết một bài viết giải thích cách tôi xử lý điều này với một "Quản lý khu vực" http://lostechies.com/derickbailey/2011/12/12/composite-js-apps-regions-and-region-managers/ –

+0

@Derick : khái niệm thú vị. Tương tự như những gì tôi làm với chế độ xem cấp cao hơn của mình, mặc dù đúng là nó không phải là Chế độ xem. Nhiều bài đăng Backbone thú vị khác trên blog của bạn! – mna