AngularJS에서 사용자가 템플릿/페이지를 떠날 때 어떻게 감지합니까?
Javascript 명령어 setInterval을 사용하고 있습니다.나는 사용자가 페이지를 떠날 때 그것을 멈추는 것을 좋아한다.
이 코드는 정상적으로 동작하고 있는 것 같습니다.http://jsfiddle.net/PQz5k/
유저가 페이지를 떠나는 것을 검출합니다.다른 HTML 페이지나 URL로 이동하기 위한 링크를 클릭하거나 페이지를 새로고침 할 때 Javascript 코드를 실행합니다.
단, Angular를 1개로 하면 동작하지 않습니다.JS 템플릿에서 다른 템플릿으로.예를 들어 template1.html에 있는 경우 사용자가 template1.html을 떠나 template2.html로 이동할 때 Javascript 코드가 Controller1.js에서 작업을 수행하도록 하겠습니다.아래의 AngularJS 코드와 동등한 것은 무엇입니까?
$(window).on('beforeunload', function() {
return 'Your own message goes here...';
});
다음과 같은 템플릿마다 하나씩 두 개의 컨트롤러가 있는 것 같습니다.
function Controller_1($scope...){
...
}
function Controller_2($scope...){
...
}
템플릿에서 다른 템플릿으로 전환하면 $syslog라고 하는 이벤트가 발생합니다.이 이벤트는 http://docs.angularjs.org/api/ng.$rootScope.Scope#$destroy에서 확인할 수 있습니다.
Controller_1을 사용하는 템플릿에서 Controller_2를 사용하는 템플릿으로 전환한다고 가정합니다.Controller_1에 정지할 간격이 있습니다.이것은, 다음의 방법으로 실시할 수 있습니다.
function Controller_1($scope, $interval...){
var myInterval = $interval(...);
$scope.$on("$destroy", function(){
$interval.cancel(myInterval);
});
}
이는 Controller_1의 $scope가 파기되면 이벤트가 호출되고 간격이 클리어됨을 의미합니다.
이는 템플릿을 남기는 경우(확인 대화상자도 표시됨)를 위한 것입니다.
function Controller_1($scope...){
var myInterval = setInterval(...);
$scope.$on('$locationChangeStart', function (event, next, current) {
console.log(current);
if (current.match("\/yourCurrentRoute")) {
var answer = confirm("Are you sure you want to leave this page?");
if (!answer) {
event.preventDefault();
}else{
clearInterval(myInterval);
}
}
});
}
UI 라우터를 사용하는 경우 onExit, 속성을 사용할 수 있습니다.
$stateProvider.state('foo', {
url: '/foo',
templateUrl: 'views/foo.html',
controller: 'fooController',
onExit: ['$fooService', function($fooService) => {
$fooService.hide();//do what u want to do here
}]
});
다음과 같이 워처를 사용하여 위치 경로가 변경된 시기를 확인할 수 있습니다.
$scope.$watch(function(){
return $location.path();
}, function(newPath, oldPath){
//...Do something
})
그러면 이전 위치, 새 위치를 얻어서 기능이나 원하는 것을 실행할 수 있습니다.
언급URL : https://stackoverflow.com/questions/13885718/in-angularjs-how-to-detect-when-user-leaves-template-page
'programing' 카테고리의 다른 글
장고: "TypeError: []은(는) JSON을 시리얼화할 수 없습니다." (0) | 2023.03.14 |
---|---|
'react-hooks/exhaustive-deps' 규칙에 대한 정의를 찾을 수 없습니다. (0) | 2023.03.14 |
react-select drowdown에서 zIndex를 변경하는 방법 (0) | 2023.03.14 |
스프링 부트 웹 응용 프로그램에서 JSP 파일이 렌더링되지 않음 (0) | 2023.03.14 |
JSON을 나타내는 Redis 문자열 vs Redis 해시: 효율성? (0) | 2023.03.14 |