问题标签 [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.
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以分析问题。我尝试通过广播将变量从节目更改为创建控制器。如果您检查创建控制器中的范围,变量会更改,但在父范围中它没有。
angularjs - 无法从其中一个控制器访问绑定到 $rootScope 的 authData
我有一个让我发疯的错误,基本上我要做的就是设置一个$rootScope.authData
保存用户身份验证信息的属性,以便我可以在不同的控制器中使用它。
但是,当我尝试这个时,它只是给我一个错误,说$rootScope.authData
没有定义。mainCtrl
我已经检查过,它确实是在undefined
从tagsCtrl
.
考虑到我可以$rootScope.authData
在我的其他控制器之一中使用这一事实,这很奇怪。如果我$rootScope.test = 'testing'
在mainCtrl
控制台日志中添加tagsCtrl
它,它也可以工作。
我看不出我在这里做错了什么,我已经走到了死胡同。有任何想法吗?
主控制器设置$rootScope.authData
:
无法访问的控制器$rootScope.authData
:
编辑:在 Bricktop 的一些反馈之后,我尝试为此创建一个服务,结果如下:
我不确定这是否有效,但似乎不是因为我收到此错误:
我像这样注入它:
这里有什么问题?
angularjs - 如何在 Angular 服务函数中设置 $rootScope?
我在为 Angularjs 设置 $rootScope 时遇到问题。
下面是我的功能
附加信息:
一种可行的方法是设置一个在多个控制器之间交互的服务。有谁知道如何使用返回 http.get json 对象的服务来做到这一点。
我无法在我的控制器中获取在服务中实例化的动态范围。
javascript - RootScope 在第三个控制器中使用时不起作用
我在 3 个控制器中使用 rootScope 变量。第一个控制器设置值,第二个控制器将其用于 ng-show。但是当我尝试通过相同的 rootScope 变量从第三个控制器控制 ng-show 时,它不起作用。“modstat” 是变量。我是 Angular 的新手。所以有人请帮我解决这个问题。代码如下:
angularjs - 当工厂中的套接字连接发生变化时,Angularjs socket.on 事件不起作用
我有一个 socket.io 的工厂,如果用户没有登录,那么我有
当用户登录网站时,我正在更改套接字值。
在我的控制器中,我有
在工厂中更改套接字变量后,此 socket.on('notification') 不起作用。
我的工厂
我的控制器
angularjs - 存储在 $rootScope 中的值的生命周期
我想知道存储在 $rootScope 中的值的生命周期是什么,尤其是在页面在不同的选项卡中打开的情况下。该值是丢失还是会保留在新打开的选项卡中?
javascript - Angularjs 指令中 $eval 执行函数的替代方案
我有一个自定义元素指令(显示用户的图片和名称),它可以采用许多不同的配置属性。该uc-on-hover
属性可以采用一个函数来确定当用户将鼠标悬停在 DOM 元素上时要显示什么元素。目前,该函数的逻辑位于 $rootScope (在角度服务中定义)。指令逻辑$eval(attr['ucOnHover'])
在 $rootScope 上执行函数。虽然这种模式暂时运作良好,但我担心它太复杂并且 $rootScope 会变得笨拙。无论如何我可以更改解决方案设计,同时仍然注意指令和服务的关注点分离并制定灵活的解决方案?
我在视图上下文中的自定义元素指令:
定义 $rootScope.namespace.displayFloatingContainer() 的服务:
该指令通过以下方式调用 $rootScope 上的函数:
对此设计的任何帮助将不胜感激。
javascript - 从 javascript 内部获取 AngularJS 对象以打开引导模式
logout() 具有打开模型的代码。我只想在 rootscope 中的 angularjs 对象值为 true 时调用 logout() 函数。如何从 javascript 检查 rootscope 对象中的内容?
angularjs - AngularJS:帮我避免这种反模式:在 $location.path 之前在 $rootScope 上设置变量
这里有一些简单的东西,我认为一定有更好的方法:我经常需要导航到一个新视图,同时我想为将要创建的范围提供一些上下文信息。我无法弄清楚如何简单地做到这两个 - 更改url(导致我的视图/控制器被实例化)并传递一些我想在控制器范围内实例化的变量 - 例如,这样它们就可以在视图中呈现模板
所以我正在做:
和newView.html
访问{{myVar}}
我知道这是错误的,避免$rootScope
像全球垃圾场一样使用的最简单的解决方案是什么?