启动新控制器时停止 $timeout

2023-12-19

我每 2 秒轮询一次数据,以使其在页面上保持更新。我的问题是当我访问另一个页面时超时保持活动状态。当我访问新页面时如何取消超时?

function IndexCtrl($scope, $timeout, RestData) {
    $scope.rd = {};

    (function getRestDataFromServer() {
        RestData.query(function(data){
            $scope.rd = data;
            $timeout(getRestDataFromServer, 2000);
        });
    })();
}

//编辑 我找到了一种解决方案,但我不确定它是否是一个好的解决方案。当我将超时保存到 $rootScope 时,我可以在所有其他控制器中取消它。

function IndexCtrl($scope, $rootScope, $timeout, RestData) {
    $scope.rd = {};

    (function getRestDataFromServer() {
        RestData.query(function(data){
            $scope.rd = data;
            $rootScope.prom = $timeout(getRestDataFromServer, 2000);
        });
    })();
}

function newPageCtrl($scope, $rootScope, $timeout) {
    $timeout.cancel($rootScope.prom); 
}

当路线更改时,会广播一些 Angular 事件。您可以在以下范围内收听他们的声音IndexCtrl using $scope.$on并采取相应行动:

$销毁事件

var promise = $timeout(getRestDataFromServer, 2000);
...

$scope.$on('$destroy', function(){
    $timeout.cancel(promise);
});

$locationChangeStart

var promise = $timeout(getRestDataFromServer, 2000);
...

$scope.$on('$locationChangeStart', function(){
    $timeout.cancel(promise);
});

$timeout()返回一个承诺对象。该对象可以提供给$timeout.cancel()取消超时功能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

启动新控制器时停止 $timeout 的相关文章

  • Angularjs 切换 div 可见性

    我试图通过单击按钮来切换 div 文本 我尝试采用范围变量并根据该变量切换类名 我在哪里犯了错误here http jsfiddle net nw5ndzrt 340
  • 用模板替换 ng-include 节点?

    对角度有点陌生 是否有可能replace包含模板内容的 ng include 节点 例如 与 div div src div div 生成的html为 div div src div div
  • 为什么我的 JavaScript 构造函数返回默认属性值而不是修改后的值?

    我正在使用 Material Steppers 开发一个小型 AngularJS 应用程序 我必须从页面的两个部分中选择项目并返回true only if的物品来自两个部分属于 id 为 categoryID 1 class Control
  • 角度不安全 url

    我使用此指令将 jCrop 与 Angular 结合使用 http plnkr co edit Z2IQX8s9UK6wQ1hS4asz p preview http plnkr co edit Z2IQX8s9UK6wQ1hS4asz p
  • 在 AngularJS 应用程序中使用 select2 插件

    我在 AngularJS 应用程序中使用 select2 插件来显示一些实体 标签 的列表 这是我的模板的部分 select ddlTags ui select2 select2Options multiple ng model link
  • 手风琴内的 ui bootstrap datepicker 不可见

    我正在尝试在手风琴内制作一个带有日期选择器的模块 问题是日期选择器弹出框在手风琴上不可见 这是一个显示问题的笨蛋 http plnkr co edit jBqU0LXQFcUuzQLency2 p preview http plnkr co
  • jquery metisMenu 无法在 ng-include 内工作

    我想用ng 包含渲染侧边栏template http startbootstrap com templates sb admin 2 模板要求jQuery metisMenu 插件对于下拉菜单 Issue 仅插件works当我加载以下脚本时
  • 找到每个元素的所有父元素

    我正在尝试创建一个面包屑而不使用 url 路由提供者 并且不使用 jQuery 我有一棵这样的树 Humans Trees Animals Cats Lions Dogs Terrier Bulldog Cocker Cars 我希望当我点
  • AngularJS:如何通过 websocket 发送文件?

    我是 websocket 的新手 我被分配了一个现有的工作聊天模块 目前该模块仅向其他用户发送消息 我被要求集成用户可以互相发送 附件 的功能 供参考 我发现了这个链接 https stackoverflow com questions 1
  • 使用像 angularjs 这样的框架对可访问性有什么影响?

    我们的立场 我们正在推动网络可访问性 以便遵守管理公共 教育机构的某些法律 到目前为止 我们一直在确保 我们的布局是按逻辑顺序排列的 图像有alt 标签 但很快我们就意识到我们需要行动起来并认真思考这个问题 我们正在考虑什么 我们一直在关注
  • Angularjs UI 模态表单

    我曾经使用引导模式有一个登录对话框 scope loginDialog backdrop true keyboard true windowClass modal loginDialog backdropClick true templat
  • Angular 1 到 Angular 5(导入嵌套组件)

    Before 角度1 5 用户界面路由器 Now 角5 0 如何在像 Angular 1 5 这样的组件父组件中导入子组件 我从 Angular 5 开始制作教程 Heroes 但没有解释这个过渡 所有组件都导入到 app modole t
  • AngularJS 应用程序:如何将 .js 文件包含到 index.html 中

    我是 angularJS 的新手 我设法使用 AngularJS 构建了一个phonegap应用程序 该应用程序正常并且运行良好 问题是 现在我对 angularJS 的工作原理有了更多的了解 至少我认为我已经了解了 我担心我的应用程序文件
  • AngularJS - 从 run 方法访问 ng-init 变量

    1 我在 ng init 中初始化了变量 例如 ng init password Mightybear 2 我想从 run方法访问它 例如 anguar module ngApp run function Access password h
  • 在 AngularJs 中设置动态作用域变量 -scope.

    我有一根绳子 是从routeParam或指令属性或其他什么 我想基于此在范围上创建一个变量 所以 scope
  • 在nodejs中从服务器下载.zip文件

    我正在使用 MEAN 其中我想允许用户从服务器下载 zip 文件 所以基本上我必须做以下事情 从某些数据创建 csv 文件 将该文件存储到某个目录中 将这些文件压缩为 zip 当用户单击该按钮时 应该下载并读取压缩文件 我已经完全达到了1
  • 设计确认链接将用户重定向到 heroku 域而不是自定义域

    我有一个网络应用程序 前端采用 Angular 后端采用 Rails 我有一个自定义域www example com并将用户重定向到 heroku URL example herokuapp com 用户注册后 需要确认他们的电子邮件 当他
  • AngularJS 的 HEAD 与 BODY

    在所有 AngularJS 示例中 Angular 库都放置在文档的 HEAD 标签中 我有一个基于 HTML5 Boilerplate 布局构建的现有项目 这定义了 JS 库应该放置在 DOM 的最底部 在 tag AngularJS需要
  • HttpContext.Current.Items["value"] 不起作用,因为 AngularJS 调用创建新会话

    我正在使用 C MVC 和 AngularJS 我的问题是我的 MVC 程序创建了一个HttpContext Current Items value 并在初始主控制器中设置值 但是当我的 AngularJS 通过 ajax 调用调用应用程序
  • ag-Grid 中的行格式

    我们需要有条件地将行文本设置为粗体 目前它仅适用于单个单元格 但我们需要在所有列单元格上应用文本粗体 应用格式设置后 isBold 列必须隐藏 删除 此列仅用于格式化 如何应用文本缩进 10px isBold 列包含真实值的第一列的 有可能

随机推荐

  • 管道在kedro中找不到节点

    我正在关注管道教程 https kedro readthedocs io en latest 03 tutorial 04 create pipelines html 创建所有需要的文件 启动 kedrokedro run node pre
  • 捕获并打印完整的 Python 异常回溯,无需停止/退出程序

    我想捕获并记录异常而不退出 例如 try do stuff except Exception as err print Exception err I want to print the entire traceback here not
  • 生成一定范围内的“n”个唯一随机数[重复]

    这个问题在这里已经有答案了 我知道如何在 Python 中生成一定范围内的随机数 random randint numLow numHigh 我知道我可以将其放入循环中以生成 n 个数字 for x in range 0 n listOfN
  • Python-删除uuencoding行

    我正在处理许多文本文件 其中 其中一些 包含 uuencoding 可以是 jpg 或 pdf 或 zip of xlsx 等 我不关心嵌入的 UUencoded 数据 所以我只想丢弃这些段落并保留其余文本 我正在努力思考如何想出一种只跳过
  • 在 pandas 中,如何查询列表?

    假设我有一个将列表作为其值的 DataFrame df pd DataFrame languages en fr author Dickens Charles Austen Jane 我可以轻松查询它的字符串 df df author Di
  • 如何在 Meteor 的服务器端调试并记录自己的代码?

    没关系 这不起作用的原因 我忘记了meteor reset so debugger没有机会停下来 呃 更多信息 我正在使用Mason Chang对相关问题的回答中的方法 而不是kill s USR1 proc id 我可以看到脚本 但无法在
  • 响应式高度/宽度视频标题

    我正在为一个网站制作一个响应式 html5 视频标题 我希望它能够垂直和水平响应 仅使用 CSS 来实现响应能力 http jsfiddle net b9cpmuy9是我用于响应宽度的 借用了这里另一篇文章的视频 width 100 hei
  • C++ 视图类型:按常量传递还是按值传递?

    最近在代码审查讨论中出现了这个问题 但没有得出令人满意的结论 所讨论的类型类似于 C string view TS 它们是围绕指针和长度的简单非拥有包装器 并用一些自定义函数装饰 include
  • Spring引导测试“没有可用的合格bean类型”

    我是 Spring boot 的新手 但这是我现在面临的问题 Application java public class Application public static void main String args SpringAppli
  • 我的编译器在做什么? (优化memcpy)

    我正在 VC 2010 中使用以下设置编译一些代码 O2 Ob2 Oi Ot 但是 我在理解生成的程序集的某些部分时遇到了一些困难 我在代码中添加了一些问题作为注释 另外 现代 cpu 上通常建议的预取距离是多少 我可以在我自己的 cpu
  • pandas concat 中的级别选项

    df1 DataFrame np arange 6 reshape 3 2 index a b c columns one two df2 DataFrame 5 np arange 4 reshape 2 2 index a c colu
  • 如何使用 jQuery 创建多个 HTML 元素?

    我想做的是使用 jQuery 创建一个表分页器控件 它包含大量链接和跨度 我已经设法通过简单的字符串连接来做到这一点 但我不敢相信 jQuery 不能让这变得更优雅 我不能在这里使用 jTemplates 因为该生成具有相当多的程序逻辑 问
  • 如何将 Npp8u * 转换为 CUdeviceptr

    我是cuda驱动程序Api接口的新手 但我认为CUdeviceptr看起来像一个句柄参数 所以我对CUdeviceptr和npp8u 之间的转换感到困惑 Npp8u src unsigned char temp temp src CUdev
  • 如何获取括号内的括号

    我试图将括号保留在由括号包围的字符串内 有问题的字符串是 test blue hmmm derp 所需的数组输出是 test and blue hmmm derp 当前输出为 blue hmm and derp 我当前的代码是this ht
  • jquery 基于单选按钮启用/禁用文本框

    在我的页面 jsp 中 我有一个单选按钮组和一个文本框 最初被禁用 每当用户单击单选按钮时 应启用文本框 当用户单击其他单选按钮时 文本框应再次被禁用 我可以使用下面的代码启用最初禁用的复选框 DevGroup OTHER click fu
  • 如何在现有项目上使用 Backpack for Laravel?

    我正在用 Laravel 构建一个小应用程序 我刚刚发现 Backpack 看起来非常漂亮 我下载了它 我有许可证 但我真的不知道如何将它与我现有的文件一起使用 到目前为止有 3 个控制器 3 个模型和一些刀片文件 也许答案就在文档中的某个
  • 如何实时检测对象并自动跟踪它,而不是用户必须在要跟踪的对象周围绘制边界框?

    我有以下代码 用户可以按p要暂停视频 请在要跟踪的对象周围绘制一个边界框 然后按 Enter 回车 以跟踪视频源中的该对象 import cv2 import sys major ver minor ver subminor ver cv2
  • EF4.1 使用按层次结构表继承创建数据库时出现异常

    我创建了一个非常简单的项目来演示每个层次结构表的继承 在我尝试生成数据库的单元测试中 根据配置 我收到了许多错误之一 没有Required method Map
  • WebRTC 无法将 Safari 与 Android 版 Chrome 连接

    WebRTC 无法将 Safari 与 Android 版 Chrome 连接 从桌面版 Chrome 到 Safari 都没有问题 另外 Safari Safari 没有任何问题 Apple 自 iOS 11 和桌面版 Safari 11
  • 启动新控制器时停止 $timeout

    我每 2 秒轮询一次数据 以使其在页面上保持更新 我的问题是当我访问另一个页面时超时保持活动状态 当我访问新页面时如何取消超时 function IndexCtrl scope timeout RestData scope rd funct