Tôi đang sử dụng durandal và requirejs để soạn chế độ xem của tôi. Tôi cũng đang tìm kiếm phương thức gọi lại vòng đời thành phần deactivate
mỗi khi tôi điều hướng khỏi chế độ xem. Tôi muốn vứt bỏ viewmodel của tôi trong phương thức này.Làm thế nào để vứt bỏ một viewmodel trong Durandal sau khi ngừng hoạt động
Tôi đã thử delete this
, this = undefined
nhưng dường như chúng không hoạt động.
Tôi cũng đang sử dụng sự kiện aggregator Durandal như thế này:
self.activate =() => {
App.trigger("testEvent");
};
App.on("testEvent").then(() =>
{
alert('Event Triggered!');
});
Vì vậy, mỗi khi viewmodel được nạp, sự kiện này sẽ được kích hoạt. Bây giờ, nếu tôi điều hướng khỏi chế độ xem, sau đó điều hướng trở lại (do đó chế độ xem sẽ được tải lại), sau đó sự kiện sẽ được kích hoạt hai lần. Nếu tôi điều hướng đến chế độ xem lần thứ 3, sự kiện sẽ được kích hoạt 3 lần, v.v. Vì vậy, các mô hình xem trước đó vẫn còn hiện diện, đó là lý do tại sao sự kiện durandal đang được kích hoạt bởi mỗi chế độ xem. Do đó, để khắc phục sự cố này, tôi cần phải hủy bỏ chế độ xem trong chế độ hủy kích hoạt, làm cách nào tôi có thể thực hiện việc này?
Lưu ý. viewmodels trong câu hỏi là thoáng qua, không singleton.
Hủy đăng ký dường như thực hiện thủ thuật; các sự kiện của tôi không còn được gọi nhiều lần nữa. Có cách nào để thực sự kiểm tra để đảm bảo chế độ xem của tôi đã được xử lý hay bạn không bận tâm? – Viqas
Có thể không đáng để thử trừ khi bạn đang tạo hàng trăm mô hình xem, nhưng bạn có thể sử dụng công cụ dành cho nhà phát triển Chrome để theo dõi số lượng đối tượng javascript và phân bổ bộ nhớ để đảm bảo bộ thu dọn rác dọn dẹp thành công đối tượng. –