当前位置: 首页 > 面试题库 >

在AngularJS中,如何检测用户何时离开模板/页面?

刘才俊
2023-03-14
问题内容

我正在使用Javascript命令:setInterval。我喜欢在用户离开页面时停止它。

该代码似乎运行良好:http :
//jsfiddle.net/PQz5k/

它检测用户何时离开页面。当用户单击链接以转到其他HTML页面或URL,或者用户重新加载页面时,它将执行Javascript代码。

但是,当我从一个AngularJS模板转到另一个模板时,它不起作用。例如,如果我在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...){
    ...
}

好吧,当您从一个模板切换到另一个模板时,会触发一个名为$
destroy的事件,您可以在此处进行阅读:http://docs.angularjs.org/api/ng.$ro​​otScope.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被销毁时,将调用该事件并清除该间隔。



 类似资料:
  • 问题内容: 我是angularjs新蜜蜂。我正在尝试编写一个验证,当用户尝试关闭浏览器窗口时会发出警告。 我的页面v1和v2上有2个链接。单击链接时,它指向特定页面。这是重定向到v1和v2的代码 当用户单击v1时,我想弹出一条消息,“如果他希望继续,他将从v1离开”,而单击v2时也是如此。任何有关如何实现这一目标的指针将不胜感激。 我在这里得到了答案,但是在每个时间间隔后都会弹出该消息。 更新的代

  • 问题内容: 检测用户是否离开网页的最佳方法是什么? 在JavaScript事件不起作用每次(HTTP请求花费的时间比需要的时间终止浏览器)。 创建一个可能会被当前的浏览器阻止。 问题答案: 尝试以下事件:在页面卸载之前将其触发。它还允许您询问用户是否真的要离开。 另外,您可以在他离开时发送Ajax请求。

  • 问题内容: 我希望我的ReactJS应用在离开特定页面时通知用户。特别是一条弹出消息,提醒他/她进行以下操作: “更改已保存,但尚未发布。现在执行吗?” 我应该在全局范围内触发此操作,还是可以在react页面/组件内完成此操作? 我还没有发现任何关于后者的信息,我宁愿避免使用第一个。除非当然是其规范,否则这使我想知道如何执行这样的事情而不必向用户可以访问的所有其他可能的页面添加代码。 欢迎有任何见

  • 如何在AngularJS中检测onKeyUp? 我正在寻找一个'ngOnkeyup'指令,类似于ngChange,但我找不到任何合适的。 如果没有这样的指令,是否有一种干净的方法可以从浏览器本机onkeyup事件调用控制器?

  • 问题内容: 如何在AngularJS中检测onKeyUp? 我正在寻找类似于ngChange的’ngOnkeyup’指令,但是找不到合适的东西。 如果没有这样的指令,是否有一种从浏览器本地onkeyup事件调用控制器的干净方法? 问题答案: 编辑:请参阅下面的maklemenz的第二个答案,它引用了新的内置ng-keyup指令 您可以使用angular-ui库: 使用angular-ui,您可以

  • 我在挑拨离间。v12上的js Bot,包括一个静音命令,用于静音您所在的整个语音频道。问题是当有人离开频道时,他们保持沉默。我正试图用一个简单的事件来解除此人的静音,但我不理解和和。我搜索了很多,但我只能找到一个适合加入风投的,而不是离开风投的。以下是我到目前为止得到的信息: 静音命令: 取消静音事件: 谢谢你花时间帮助我!:)