问题标签 [rootscope]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4187 浏览

javascript - 从 $rootScope 中的指令调用函数 - AngularJS

我想做的事:

我正在尝试在可以从$rootScope.


问题:

它似乎只在处理 DOM 中具有此指令的最后一项。我猜rootScope.myFunction每次运行该指令时都会覆盖正在发生的事情。


问题:

如何在$rootScope其中创建一个函数,当调用该函数时,它会为每个指令运行内部函数,而不仅仅是最后一个?


相关代码:

然后在另一个脚本中,我想调用:


请注意,我不允许分享我正在处理的项目中的实际代码,所以这是一个更普遍的问题,与特定用例无关。

0 投票
1 回答
677 浏览

javascript - 角根范围和范围问题

我注意到在我的一个控制器中,我正在注入 $rootScope 和 $scope,它们都指向同一个对象。

此外,在我所有的其他控制器中,$scope 对象是共享的。因此,每当我注入作用域时,它都包含在迄今为止已实例化的所有其他控制器中分配给它的属性/方法。

这不是我从一开始就开发的应用程序,它非常庞大。我以前没有见过这种行为,我不知道从哪里开始诊断它。任何想法是什么原因造成的?

我们设置控制器/指令的方式非常标准,看起来像这样:

我们还按如下方式配置我们的应用程序:

angular.module('myApp', ['ui.router', 'kendo.directives'])
.config(function ($stateProvider, $urlRouterProvider) { $urlRouterProvider.otherwise('/');

回应 Kursad Gulseven 的评论,这就是我在 Batarang 看到的:

巴达朗截图

ID 为 002 的范围作为 $scope 和 $rootScope 传递给第一个控制器。将属性添加到 $scope 时,它​​们会显示在 $rootScope 上。然后所有其他控制器都接收 ID 为 00A 的范围。因此,在这些控制器中添加到 $scope 的属性对于注入 $scope 的所有其他控制器都是可见的。

0 投票
1 回答
4889 浏览

javascript - AngularJS 工厂 $rootScope.$on 清理

如何从服务内部清理 $rootScope.$on 事件订阅?

我有一个工厂,它正在我的 AngularJS 应用程序的不同控制器中初始化,其中声明了 $rootScope.$on 事件订阅。我的问题是,当控制器被销毁时,事件没有被清理。我已经阅读并发现使用控制器和指令可以在 $destroy 上设置 $watch 进行清理,但是对于服务呢?你如何清理服务?

这是我的问题的基本 Plunker:http: //plnkr.co/edit/dY3BVW。多次单击“创建子”按钮以初始化子控制器,该子控制器将使用 $rootScope.$on 初始化工厂。当您单击“广播”时打开浏览器控制台,您将看到一堆事件订阅被触发,这是子控制器被销毁后的事件。

来自 Plunker 的片段:

0 投票
3 回答
519 浏览

angularjs - $rootScope 在这个函数中做了什么?

在这个来自Angular 文档的指令单元测试示例中:

有人能解释一下 ($rootScope) 在 it 函数的元素变量声明中做了什么吗?

我不确定它有什么作用。

0 投票
0 回答
719 浏览

angularjs - angular.element().scope().$root 和 angular.element().injector().get('$rootScope') 之间的区别

我发现很难在我的代码中找到特定问题的根本原因。源代码在这里

我想访问$rootScope,但其中一种方法是失败。

路线一:

使用类获取 DOM 中的第一个元素ng-scope并执行 aangular.element(elem).scope().$root以获取根。

路线2:

使用类获取 DOM 中的第一个元素,并通过执行操作获取ng-scope元素上的注入器,我可以获得.angular.element(elem).injector()injector().get('$rootScope')$rootScope

Route 1中,当我的代码执行时,angular.element(document.querySelector('.ng-scope')).scope()我得到未定义,因为scope在此元素上不可用。我试图得到angular.element(elem).data(),但我得到一个空对象。

这是否意味着 angular 还没有贯穿这个元素?如果是,如果 angular 还没有通过这个元素,为什么我会看到一个ng-scope已经被应用的类?

$rootScopeaccess throughinjector().get('$rootScope')和 through有什么区别scope().$root?为什么我的Route 1失败了?

路线一:

在此处输入图像描述

路线2:

在此处输入图像描述

0 投票
1 回答
1310 浏览

angularjs - Angular $broadcast 仅在页面刷新后更新

嗨,我在 Angular 中有一个问题,$scope.$broadcast只有在页面刷新一次后才更新监听值:

一个控制器:

听众:

如果我刷新页面一次,它会起作用,但在初始加载时,侦听器不起作用?有任何想法吗?

0 投票
1 回答
1326 浏览

javascript - 不反映我在 angularjs 中的 `$rootScope` 的更改

我在尝试将我的更改反映在$rootScope. 据我了解(请注意,我对 很陌生angular),$rootScopecontrollers. 我要做的是更新一个值$rootScope并尝试在我的html页面中读取该值。

问题是即使更改应用到$rootScope它没有反映在我看来。以下是代码

我有一个div我想根据值显示/隐藏的

但是制作$rootScope.logged = true并不会使视图可见。我的问题是

1 - 我可能出了什么问题?

2 - 做这种事情最有角度的方式是什么?

0 投票
1 回答
14323 浏览

angularjs - 在angularjs中检测页面卸载

我有一个 javascript 对象,我需要全局到我的 angularjs 应用程序。当应用程序即将被卸载时(由于页面刷新或其他情况),我想将对象持久保存到浏览器存储中。我相信将对象添加到 $rootScope 将满足使对象全局化的第一个要求,但是在事件期间将对象写入存储onbeforeunload将需要访问 $rootScope 变量。是否可以在 angularjs 中检测到页面卸载事件?

0 投票
3 回答
8919 浏览

javascript - AngularJS + Ionic - 如何使用延迟承诺从第一个控制器调用第二个控制器上的方法?

我需要在第一个控制器的方法中从第二个控制器调用初始化用户设置值(设置为 rootscope)的方法。

值成功设置为rootscope后,返回前提,继续执行第一个控制器的第二种方法。

我用发射和广播示例进行了尝试,但没有运气。

有人可以给我一个建议如何正确地做到这一点吗?

我在 Angular 1.2 和 Ionic 1,beta 13

非常感谢您的帮助。

模板:

代码:

在第二个控制器中:

0 投票
1 回答
5262 浏览

angularjs - AngularJS ui-router 登录后重定向

我有一个使用 AngularJS 和 ui-router 的项目。除了从登录屏幕重定向到第一次加载时的预览状态之外,一切正常。

默认状态是 home - http://test/#/

例如,如果用户未登录 - http://test/#/test/1000/details进入登录页面(它应该这样做)

然后在用户登录后,系统进入默认状态“home - http://test/#/ ”但我想去http://test/#/requests/1000/details

登录后如何保存“ http://test/#/requests/1000/details或 stateName”以重定向?

我尝试使用$stateChangeSuccess保存状态日志,$rootscope但第一个(http://test/#/requests/1000/details)永远不会被保存。

任何想法如何处理这个?

谢谢。