7

Tôi có một đối tượng javascript mà tôi cần toàn cầu cho ứng dụng angularjs của mình. Khi ứng dụng sắp được tải xuống (do một trang làm mới hoặc một số kịch bản khác), tôi muốn lưu giữ đối tượng vào bộ nhớ trình duyệt. Tôi tin rằng việc thêm đối tượng vào $ rootScope sẽ đáp ứng yêu cầu đầu tiên của việc tạo đối tượng toàn cục, nhưng ghi đối tượng vào bộ nhớ trong sự kiện onbeforeunload, sẽ yêu cầu quyền truy cập vào biến $ rootScope. Có thể phát hiện sự kiện tải trang trong angularj không?Phát hiện tải trang trong angularjs

+0

có bạn xem là sử dụng cái gì đó như https://github.com/grevory/angular-local-storage hoặc https://github.com/gsklee/ngStorage – Vadim

Trả lời

11

này nên làm điều đó, nhưng tôi cũng đề nghị tránh $rootScope như trạng thái toàn cầu không được khuyến khích, và bạn cũng có thể quấn localStorage trong một dịch vụ để nó có thể được tiêm và chế giễu để thử nghiệm.

.run([ 
    '$window', 
    '$rootScope', 
    function($window, $rootScope) { 
    $window.addEventListener('beforeunload', function() { 
     localStorage.myValue = $rootScope.myValue; 
    }); 
    } 
]); 
+0

Cảm ơn. Và sự kiện tải trang hoàn thành có phải là 'tải' không? – user1491636

+0

@ user1491636 Tôi không nghĩ bạn nên sử dụng sự kiện đó. Nếu bạn muốn một cái gì đó để chạy ở đầu của ứng dụng góc của bạn, chỉ cần đặt nó trong một khối 'chạy' như trong ví dụ của tôi ở đây. – m59

+0

Giải pháp của bạn không giải quyết được vấn đề, bởi vì ngay cả bằng cách bấm hủy bỏ nó được gọi. –

Các vấn đề liên quan