Mới sử dụng Backbone và có ứng dụng rất đơn giản. Về cơ bản có Clients
và ClientItems
. Tôi có một cái nhìn để hiển thị tất cả các khách hàng và nếu bạn bấm vào một khách hàng bạn sẽ được đưa đến ClientItems của họ. Chuyển sang chế độ xem ClientItems này chỉ cần ẩn chế độ xem Khách hàng và quay lại Ứng dụng khách cần ẩn ClientItems. Bây giờ, trong hàm render()
của tôi cho mỗi chế độ xem, nó đang trải qua các bộ sưu tập và tự động thêm nội dung vào trang. Khi tôi đi qua lại giữa hai (bằng cách sử dụng nút quay lại) Tôi không thực sự cần phải hoàn toàn làm lại một lần nữa vì tất cả các dữ liệu có trong trang, chỉ cần ẩn. Logic này nên đi đâu? Ngay bây giờ tôi có nó trong các chức năng render()
nhưng nó cảm thấy cẩu thả, cách ưa thích của việc xử lý này là gì?Hiển thị xương sống/ẩn hiển thị các phương pháp hay nhất
Trả lời
Chúng tôi đang sử dụng một biến toàn cầu App
với một số chức năng thường sử dụng trên ứng dụng:
var App = {
initialize : function() {
App.views = {
clientView : new ClientsView(),
clientItemView : new ClientsItemsView()
}
},
showView: function(view){
if(App.views.current != undefined){
$(App.views.current.el).hide();
}
App.views.current = view;
$(App.views.current.el).show();
},
...
}
Và sau đó tôi sử dụng App
này từ các bộ phận khác của ứng dụng:
App.showView(App.views.clientView);
giải pháp IntoTheVoid là tốt - thật tuyệt khi có một nơi duy nhất để ẩn/hiện chế độ xem. Nhưng làm thế nào để bạn kích hoạt logic?
Theo kinh nghiệm của tôi, bộ định tuyến là nơi tốt nhất cho việc này. Khi thay đổi tuyến đường và chức năng thích hợp được gọi, bạn nên cập nhật (các) chế độ hiển thị đang hoạt động.
Điều gì sẽ xảy ra nếu bạn cần nhiều lượt xem cùng một lúc? Nếu bạn có chế độ xem chính luôn thay đổi khi thay đổi tuyến đường và nhiều chế độ xem dính phụ, bạn không cần phải lo lắng. Nhưng nếu nó phức tạp hơn thế, hãy nghĩ đến việc tạo ra một ComboView gọn gàng gói tất cả các khung nhìn liên quan thành một cái có chứa nút el
. Bằng cách đó, logic trên vẫn hoạt động, và các chức năng định tuyến của bạn không được phân tích bằng logic để quản lý các khung nhìn nào có thể nhìn thấy vào lúc này.
Có vẻ tốt. Tôi thấy rằng bạn tạo ra các Views ngay lập tức tắt con dơi trong 'initialize'. Đây có phải là một điều phổ biến để làm? Bạn sẽ làm tương tự với các bộ sưu tập? Làm cho tinh thần với tôi bây giờ kể từ khi tôi chỉ sẽ cần một trường hợp duy nhất của một trong hai nhưng tôi vẫn đang học. – Brandon
chúng tôi chỉ đang tạo các chế độ xem ngay lập tức, tất cả các nội dung khác được tạo khi cần. Tất nhiên, bạn có thể thêm require.js và init view khi được yêu cầu đầu tiên. –
Chúng tôi đang sử dụng App.views.current.show() để bất kỳ logic bổ sung nào liên quan đến việc hiển thị có thể được thực hiện ở đó (có thể có các trình xử lý sự kiện khác thay đổi) –