问题标签 [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 回答
1067 浏览

javascript - $broadcast 后 AngularJS 不更新视图

我知道我不是第一个遇到这个问题的人,但这里没有解决方案帮助我解决它。

我有两个控制器 ShowController 和 CreateController。我想从 ShowController 广播并在 CreateCrontroller 中接收。为此,我使用了 BroadcastService。一切都按预期工作。由于单击事件,ShowController 将数据保存到广播事件的服务中,而 CreateController 接收事件和数据。取决于数据,我想激活一个选项卡,即由 CreateController 启动的视图。在 on-method 中设置 $scope 变量后,它们会发生变化,但视图不会自行更新。

我试图将 $broadcast 以及 $on 方法包装在 $timestamp 中以强制 $apply。在设置了 $scope 变量后,我还尝试了 $apply,并尝试在 $apply 中的匿名函数中设置 $scope 变量。这些解决方案都不适合我。我显然错过了一些东西。

编辑附加 的小提琴正在工作,但没有问题。两个控制器都有一个父控制器。如果我$scope在子控制器中检查,则添加新数据,但如果我检查父控制器$$childTail,则子数据未更改。所以广播工作。问题出在控制器结构或范围继承中。

为什么即使变量没有在父控制器中初始化和更改,视图也会监听父控制器?

编辑 2 就我试图定位问题而言,我认为我发现了一个问题。如果我尝试从显示控制器广播到创建控制器。创建控制器尚未初始化。在我第二次尝试之后,广播工作。但是视图中的变量仍然没有改变!请参阅此工作plnkr以分析问题。我尝试通过广播将变量从节目更改为创建控制器。如果您检查创建控制器中的范围,变量会更改,但在父范围中它没有。

0 投票
2 回答
751 浏览

angularjs - 无法从其中一个控制器访问绑定到 $rootScope 的 authData

我有一个让我发疯的错误,基本上我要做的就是设置一个$rootScope.authData保存用户身份验证信息的属性,以便我可以在不同的控制器中使用它。

但是,当我尝试这个时,它只是给我一个错误,说$rootScope.authData没有定义。mainCtrl我已经检查过,它确实是在undefinedtagsCtrl.

考虑到我可以$rootScope.authData在我的其他控制器之一中使用这一事实,这很奇怪。如果我$rootScope.test = 'testing'mainCtrl控制台日志中添加tagsCtrl它,它也可以工作。

我看不出我在这里做错了什么,我已经走到了死胡同。有任何想法吗?

主控制器设置$rootScope.authData

无法访问的控制器$rootScope.authData

编辑:在 Bricktop 的一些反馈之后,我尝试为此创建一个服务,结果如下:

我不确定这是否有效,但似乎不是因为我收到此错误:

我像这样注入它:

这里有什么问题?

0 投票
2 回答
1131 浏览

javascript - 如何在AngularJS中相互通信控制器?

我正在写一个控制器。该控制器必须与其他控制器通信。但是不知道有没有可能?

HTML:

JS:

我在 JSfiddle 上修复了示例:示例

0 投票
2 回答
8567 浏览

angularjs - 如何在 Angular 服务函数中设置 $rootScope?

我在为 Angularjs 设置 $rootScope 时遇到问题。

下面是我的功能

附加信息:

一种可行的方法是设置一个在多个控制器之间交互的服务。有谁知道如何使用返回 http.get json 对象的服务来做到这一点。

我无法在我的控制器中获取在服务中实例化的动态范围。

0 投票
2 回答
2980 浏览

javascript - RootScope 在第三个控制器中使用时不起作用

我在 3 个控制器中使用 rootScope 变量。第一个控制器设置值,第二个控制器将其用于 ng-show。但是当我尝试通过相同的 rootScope 变量从第三个控制器控制 ng-show 时,它不起作用。“modstat” 是变量。我是 Angular 的新手。所以有人请帮我解决这个问题。代码如下:

0 投票
0 回答
890 浏览

angularjs - 当工厂中的套接字连接发生变化时,Angularjs socket.on 事件不起作用

我有一个 socket.io 的工厂,如果用户没有登录,那么我有

当用户登录网站时,我正在更改套接字值。

在我的控制器中,我有

在工厂中更改套接字变量后,此 socket.on('notification') 不起作用。

我的工厂

我的控制器

0 投票
1 回答
387 浏览

angularjs - 存储在 $rootScope 中的值的生命周期

我想知道存储在 $rootScope 中的值的生命周期是什么,尤其是在页面在不同的选项卡中打开的情况下。该值是丢失还是会保留在新打开的选项卡中?

0 投票
1 回答
1525 浏览

javascript - Angularjs 指令中 $eval 执行函数的替代方案

我有一个自定义元素指令(显示用户的图片和名称),它可以采用许多不同的配置属性。该uc-on-hover属性可以采用一个函数来确定当用户将鼠标悬停在 DOM 元素上时要显示什么元素。目前,该函数的逻辑位于 $rootScope (在角度服务中定义)。指令逻辑$eval(attr['ucOnHover'])在 $rootScope 上执行函数。虽然这种模式暂时运作良好,但我担心它太复杂并且 $rootScope 会变得笨拙。无论如何我可以更改解决方案设计,同时仍然注意指令和服务的关注点分离并制定灵活的解决方案?

我在视图上下文中的自定义元素指令:

定义 $rootScope.namespace.displayFloatingContainer() 的服务:

该指令通过以下方式调用 $rootScope 上的函数:

对此设计的任何帮助将不胜感激。

0 投票
1 回答
71 浏览

javascript - 从 javascript 内部获取 AngularJS 对象以打开引导模式

logout() 具有打开模型的代码。我只想在 rootscope 中的 angularjs 对象值为 true 时调用 logout() 函数。如何从 javascript 检查 rootscope 对象中的内容?

0 投票
0 回答
145 浏览

angularjs - AngularJS:帮我避免这种反模式:在 $location.path 之前在 $rootScope 上设置变量

这里有一些简单的东西,我认为一定有更好的方法:我经常需要导航到一个新视图,同时我想为将要创建的范围提供一些上下文信息。我无法弄清楚如何简单地做到这两个 - 更改url(导致我的视​​图/控制器被实例化)并传递一些我想在控制器范围内实例化的变量 - 例如,这样它们就可以在视图中呈现模板

所以我正在做:

newView.html访问{{myVar}}

我知道这是错误的,避免$rootScope像全球垃圾场一样使用的最简单的解决方案是什么?