如何在离开用户界面状态时停止 $interval?

2024-02-11

Angular、UI 路由器。在状态控制器中使用 $interval 如下所示:

$scope.Timer = null;

$scope.startTimer = function () { 
    $scope.Timer = $interval($scope.Foo, 30000);
};

$scope.stopTimer = function () {
    if (angular.isDefined($scope.Timer)) {
        $interval.cancel($scope.Timer);
    }
};

问题?定时器在离开该状态后仍然存在。我的理解是,当状态离开时, $scope 和控制器本质上被“破坏”。因此,基于此,计时器应该停止(在控制器内,我在移动时取消计时器,这是有效的 - 但如果我导航到差异状态,它仍然存在)。我在这里误解了什么?

我想因为间隔和超时是services http://tutorials.jenkov.com/angularjs/timeout-interval.html在角度中,它们随处可用,但我仍然不明白它们如何在未初始化的控制器中看到函数,除非它被复制。我的解决方案是只使用常规的旧js间隔吗?


清除间隔$destroy https://docs.angularjs.org/api/ng/type/%24rootScope.Scope

像这样

$scope.$on("$destroy",function(){
    if (angular.isDefined($scope.Timer)) {
        $interval.cancel($scope.Timer);
    }
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在离开用户界面状态时停止 $interval? 的相关文章

  • Angular 中控制器之间的通信

    我熟悉以下实现控制器之间通信的方法 还有其他人吗 有更好的方法 最佳实践吗 broadcast emit controller Parent function scope scope broadcast SomethingHappened
  • 角度观察周期或摘要周期完成时如何调用函数

    在 Angular 完成所有监视周期后 有什么方法可以调用 Angular 中的自定义函数 要求 我的控制器内有多种手表功能 现在我只想在所有手表函数都由角度执行后才执行函数 摘要完成后 有几种方法可以注册回调 Using postDige
  • Angular 2 变更检测是如何工作的?

    在 Angular 1 中 更改检测是通过对 scope 层次结构进行脏检查来进行的 我们会在模板 控制器或组件中隐式或显式创建观察者 在 Angular 2 中 我们不再有 scope 但我们确实重写了 setInterval setTi
  • 在哪里放置资源特定逻辑

    您能帮我考虑在 AngularJS 中将资源 服务 特定的业务逻辑放置在哪里吗 我觉得在我的资源上创建一些类似模型的抽象应该很棒 但我不确定如何做 API调用 gt GET customers 1 lt first name John la
  • 在 angularjs 中的某些字段上设置条件焦点[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 您好 所有工程师同事 我看到了很多问题 并提出了关于将焦点设置在某些输入字段上的答案 但我没有找到任何可以满足我的要求的
  • 根据路由隐藏 ng-view DOM 之外的元素

    问题 如何将 登录 视图 路线添加到我的角度应用程序中 隐藏位于ng view DOM 情况 在我的 Angular 页面中 左侧有一个导航树视图 中间有一个主视图 div div class col sm 3 div div div di
  • 在 Protractor / Webdriver 中等待页面重定向

    我有一个测试 单击按钮并重定向到用户仪表板 当发生这种情况时 Webdriver 返回 javascript error document unloaded while waiting for result 为了解决这个问题 我插入brow
  • 从 Angular-ui 引导日期选择器中删除周列和按钮

    我在用Angular UI Bootstrap 日期选择器 http angular ui github io bootstrap datepicker 现在我需要从日期选择器中删除 week 列和周按钮 我的应用程序的多种形式都使用了这个
  • AngularJS orderBy 不能与 ngOptions 中的 track by 一起使用?

    我正在尝试排序ngOptions with track by 这是我的模板
  • AngularJS:选择非 2 路绑定到模型

    我正在使用选择来显示客户名称 用户应该能够选择现有客户端 然后更新范围属性 控制器 初始化 首选 if scope clients length gt 0 scope existingClient scope clients 0 View
  • 使用 Ionic/angularjs 打开图片库

    如何使用 Ionic angularjs 访问图片库 我只想在每次单击按钮时打开图片库 这怎么可能 您可以使用cordova相机插件 cordova 插件添加 org apache cordova camera 插件参考 https git
  • Material Design Lite 与 AngularJS 的集成 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我知道角材料 https github com angular material这有助于实现在 Angular 单页应用程序中使用的 Mater
  • 错误 11 秒后等待 Protractor 与页面同步超时

    我的量角器测试有问题 我的角度应用程序使用 timeout 不断从服务器轮询某些内容 不幸的是 当我运行测试时 这会导致以下错误消息 There was a webdriver error Error Timed out waiting f
  • 属性中的角度表达式

    我有一个使用 Angular 的页面 其中我从引导程序实现了弹出窗口 img class state msg 数据内容无法正确呈现 它按字面意思返回 item status message 而不是 message 的值 角度在 数据 属性中
  • angular.js ui + bootstrap typeahead + 异步调用

    我将 typeahead 与 angular js 指令一起使用 但填充自动完成的函数进行了异步调用 我无法返回它来填充自动完成 有没有办法让它与这个异步调用一起工作 我可以假设您正在使用 Bootstrap 2 x 的 typeahead
  • 如何在 ngRepeat 中突出显示选定的行?

    我找不到可以帮助我解决这个简单问题的东西 在角度 比较时所有答案都与导航栏相关 正在根据位置路径进行 我使用列表和构建了一个动态表ngRepeat 当我单击一行时 我尝试为该行分配一个选定的 css 类 以突出显示该行已被用户选择的事实 并
  • $http.get() 与 JSON 数据

    我正在编写一个服务器应用程序 并希望客户端使用正文中的数据来参数化我的 GET 方法 如下所示 http v GET http localhost 3000 url text 123 foo bar GET url HTTP 1 1 Acc
  • Angular 1.6 和多个模块:在模块和组件之间共享全局变量

    我正在使用 Angular 1 6 7 我在我的应用程序中创建了多个模块 如何将父模块 myApp 中定义的常量 例如 rootURL 传递给子模块 childApp 更具体地说 我需要将 rootURL 的值分配给 childApp 组件
  • Chrome 版本 58 的 Redactor 编辑器文本格式问题

    我们正在使用编辑器 https imperavi com redactor https imperavi com redactor 版本 10 1 1 并且由于对项目的大量依赖而未迁移到 Redactor II 最近 我们在 Chrome
  • 将占位符绑定到模型会导致 ng-change 在 IE 中加载时执行

    使用 angularjs 如果我将输入的占位符绑定到其模型 则当文档在 IE 中加载时会触发更改事件 这似乎不正确 我在其他浏览器中没有看到这种行为 JSFiddle http jsfiddle net VxBNW 6 Html div d

随机推荐

  • 来自API的奇怪字符串的java字符编码

    我对 API 的响应遇到了奇怪的问题 我正在使用 apache HTTP 客户端来获取响应 响应头有以下内容 Content Type application json charset utf 16 Transfer Encoding ch
  • 如何更改 iOS 7 中 UISearchBar 中放大镜图标的位置或隐藏放大镜图标?

    我正在开发 IOS 7 应用程序 默认情况下 它的显示像图 1 但我需要将其更改为图 2 我在谷歌上搜索并找到了一些要求的答案 但它没有改变 否则我需要隐藏 这样我就可以使用背景图像进行管理 这是第一张图像 我用下面的代码修改它 但没有成功
  • Python 3 中全局变量的正确使用

    Python 3 中全局变量的正确用法是 1 陈述global VAR NAME一旦进入核心脚本 不在函数内 然后简单地将变量引用为VAR NAME其他地方 2 陈述global VAR NAME在每个使用全局变量的函数中一次 然后简单地将
  • 如何使用 GTK+ / Cairo 旋转图像

    我有一个简单的应用程序 应该使用每 x 毫秒旋转装饰轮这么多度GTK and Cairo 我下面有一些代码可以调用cairo rotate 来自计时器 然而 图像并没有改变 我是否必须使图像无效才能引发暴露事件 我对开罗很陌生 一个简单的例
  • Android SDK与ubuntu设置代理

    在哪里可以找到 android SDK 代理设置 我正在使用 ubuntu 提前致谢 我所拥有的一切都在下面的屏幕中 我目前只能在我的 mac 上查看 设置存储在 android androidtool cfg 我的设置目前如下所示 Set
  • 检查断点处的条件时 gdb 失败

    我定义一个断点 b foo 124 if strcmp bar foo getName abc 0 但是 gdb 失败并出现以下错误 Thread 0x7fffe8ef9700 LWP 25817 exited Switching to T
  • 如何让用户使用 Android 中的 Intent 仅选择本地文件?

    我需要让用户从本地存储中为我的应用程序选择一个文件 现在我正在使用INTENT ACTION GET CONTENT让用户选择文件 但它也提供了从云中选择 URI 的选项 获取 URI 文件后 我将其视为本地文件并执行各种操作 包括提取文件
  • 将组合框显示文本设置为 ObservableCollection 的属性

    我有以下集合 我想将其绑定到组合框 public ObservableCollection
  • 使用 jquery.each() 循环创建对象键

    我正在 javascript 中创建一个命名空间来循环遍历表单并创建一个对象 调用该函数的目标是循环遍历所有特定表单类型并构造一个对象 该对象的键是 html 输入的名称 值是其当前值 但是 它始终返回未定义 任何帮助将不胜感激 get f
  • 尽管符号存在,但 CMake 中的符号查找失败

    我正在尝试使用 CMake 检查符号 getaddrinfo a 是否存在 list APPEND CMAKE REQUIRED DEFINITIONS D GNU SOURCE check symbol exists getaddrinf
  • 如何用C++扩展TCL?

    我可以编写可编译并用于扩展 TCL 的 C 代码 我不是指调用可执行文件 吗 我可以描述一些类 函数并通过调用已编译的 so 或 a 文件 C 代码在我的 TCl 代码中使用它们吗 如果是 请示意性地向我解释一下它是如何完成的 http c
  • CodeFirst 相对于 Database First 的优势是什么?

    我正在观看 EF 4 1 的一些视频和教程 我不明白 CodeFirst 的任何好处 除了一些 DB 非常小的 3 4 个表并且我懒得先创建 DB 的情况 大多数情况下 迄今为止最好的方法是在某种数据库编辑器中创建数据库 这肯定比在实体模型
  • Python:如何用常规属性替换属性?

    基类有这样的 def management form self code here return form management form property management form 在我的派生类中 我试图这样写 self manag
  • CSS无冲突样式

    创建 CSS 样式表的无冲突版本的好方法是什么 假设您有一堆代码 其中的类与 Bootstrap 的类重叠 这是否有效 添加一个class bootstrap 到应应用引导样式的祖先元素 然后更改bootstrap css为每个添加前缀ru
  • JXA:从 CoreServices 访问 CFString 常量

    JXA https developer apple com library mac releasenotes InterapplicationCommunication RN JavaScriptForAutomation Articles
  • XML 数据类型方法“value”的参数 1 必须是字符串文字

    我已经读过SO XML 数据类型方法 值 必须是字符串文字 https stackoverflow com q 11029674 62576但我的问题有点不同 我在一个变量中有一些 xml 我想将其分开并给出一个路径 最初我尝试过这个 de
  • 带有组的pivot_longer并删除列名前缀[重复]

    这个问题在这里已经有答案了 我正在尝试使用pivot longer 将数据帧从宽格式转换为长格式 原始数据框是 df start lt structure list amprise 0 015 ampfull 0 005 ampfall 0
  • 桶的索引计数

    所以 这是我的小问题 Let s say I have a list of buckets a0 an which respectively contain L lt c0 cn lt H items I can decide of the
  • 使用 tastypie 的 REST url

    我在 django 应用程序中使用 tastypie 并尝试让它映射像 api booking 2011 01 01 这样的 URL 该 URL 映射到 URL 中具有指定时间戳的 Booking 模型 该文档没有说明如何实现这一点 您想要
  • 如何在离开用户界面状态时停止 $interval?

    Angular UI 路由器 在状态控制器中使用 interval 如下所示 scope Timer null scope startTimer function scope Timer interval scope Foo 30000 s