Tôi đang làm việc trên một ứng dụng backbone.js và đã đạt đến điểm mà tôi có một số bộ định tuyến và khung nhìn đại diện cho từng phần của ứng dụng của tôi. Trong ví dụ về bộ định tuyến đơn giản dưới đây, tôi có hai vị trí; account
& users
.Chế độ xem làm sạch với backbone.js?
Cả hai chế độ xem ở mỗi vị trí đều hiển thị nội dung của chúng thành một phần tử tương hỗ, có tên là #appcontainer
. Ý thức chung của tôi nói rằng tôi nên đảm bảo rằng mỗi lần xem remove
trước khi khởi chạy một chế độ xem khác để ngăn chặn xung đột trong các ràng buộc, DOM và không có gì.
Nhưng vì tôi không thể biết chắc chắn liệu một chế độ xem đã được tạo chưa, tôi không thể gọi rõ ràng previousView.remove()
từ bên trong bộ định tuyến hoặc chế độ xem của tôi.
Có đủ để thêm $(this.el).empty()
vào hàm tạo của mỗi chế độ xem để xóa mọi ràng buộc và thành phần trước đó khỏi DOM không?
Đây là ví dụ về bộ định tuyến?
var myRouter = Backbone.Router.extend({
routes: {
"account": "account",
"users": "users"
},
account: function() {
view = new AccountView({});
view.render();
},
users: function() {
view = new UserView({});
view.render();
}
});
Xin chào! Cảm ơn câu trả lời của bạn. Việc chạy '.remove()' -method của jQuery có tách biệt chính nó khỏi các dấu chéo '.remove()' trên các khung nhìn không? – Industrial
Backbone's .remove() chỉ là một bí danh cho jquery's .remove(), vì vậy cho các mục đích này chúng bằng nhau. – MrGrigg
@MrGrigg ** Bạn có thể làm rõ nơi phương thức kết xuất sẽ đi? Dường như nó đi vào bản thân Router, nhưng tôi muốn chắc chắn rằng ... ** _Tôi thực sự thích giao diện của mã này và ngay từ cái nhìn đầu tiên, có vẻ như đó là một cách hay để cấu trúc một ứng dụng. – Emerson