Phụ thuộc vòng tròn trong BackboneJS
Ngày cập nhật: 12-12-2015 | Lượt xem: 8941 | Danh mục: BackboneJS
Tìm kiếm
Lỗi không bắt được: Tên module “router” chưa được tải lên cho ngữ cảnh: _
Hôm nay khi đang viết một chức năng đơn giản để tạo mới trang, mình đã gặp phải lỗi trên. Lỗi này xuất phát từ file views/new_item.js
với đoạn code sau:
|
|
Đã kiểm tra kỹ đường dẫn và xác nhận rằng file router.js
đã được load thành công, nhưng vẫn bị báo lỗi. Khi so sánh lại nội dung của router.js
, mình thấy đoạn code như sau:
|
|
Từ đó có thể nhận ra rằng new_item.js
và router.js
đã tạo thành mối quan hệ phụ thuộc vòng tròn (Circular Dependency).
Ví dụ như khi tạo mới một mục, mình muốn tự động trở về trang chủ bằng cách gọi:
|
|
Chính dòng lệnh này là nguyên nhân gây ra vấn đề Circular Dependency.
Làm thế nào để tránh phụ thuộc vòng tròn do Router gây ra?
Thay vì sử dụng router.navigate
, ta có thể dùng cách sau để thực hiện điều hướng mà không cần tham chiếu trực tiếp tới Router:
|
|
Cách này giúp bạn tránh được việc gọi ngược từ View sang Router, giảm thiểu rủi ro tạo nên chuỗi phụ thuộc vòng tròn giữa các module.
Tài liệu
- Lịch sử trình duyệt - Nên dùng cái nào? Backbone.js Router.navigate và window.location.hash – Stack Overflow
- JavaScript - Sự kiện thay đổi route trong Backbone – Stack Overflow