问题标签 [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.
angularjs - 跟踪 utm_source 未跟踪
您好我正在使用 mixpanel 和 GA 来跟踪用户行为。由于在某些情况下通常不提供推荐来源,例如 instagram。因此,我有推荐 URL .../ig 来从 instagram 获取推荐。它直接重新路由到'/'。
因此它不会被 GA 和 mixpanel 跟踪。要进行跟踪,我在 rootScope 中执行以下操作
上面的代码位于我的运行块中,以便在重新路由之前附加到 utm 并且可以被跟踪。它似乎在识别 utm 之前被重新路由。不幸的是,它不起作用。我做错了什么?
angularjs - 如何在angularjs中返回一个新的关键onchange位置
这个想法是在您更改页面后始终拥有一个新密钥,这是我的代码,但我认为我有问题
如果你们中的一个人已经尝试过$locationChangeSuccess
,它可以帮助我谢谢
angularjs - ng-repeat Angularjs 中的 $rootScope 变量
我有两个不同的表格模板。我在第一个表中使用 ng-show='template == 1' 指令和在第二个表中使用 ng-show='template == 2' 来保持表的可见性。我在控制器上将模板设置为 1 或 2。我在两个表中将行构建为 ng-repeat = "det in $root.tradedetails" 并将 json 从控制器分配给 tradedetails。我可以为两个表模板使用相同的 rootscope 变量 $root.tradedetails 吗?例如,如果我想迭代第一个表,我将设置模板 = 1 并将详细信息分配给 $root.tradedetails。它会自动将第二个表格的显示设置为无。我想知道第二个表中的 ng-repeat 是否遍历 $root.tradedetails。
angularjs - 防止 $rootScope.$on 多次调用函数
我在控制器顶部有一个 $rootScope.$on 代码。我注意到每次我加载/调用这个控制器时,$rootScope.$on 监听器都会增加,这意味着它会在你访问控制器时无限期地添加和添加监听器。
当我从另一个控制器通过 $rootScope.$emit 调用它时,我注意到了它,$rootScope.$on 中的函数被执行了好几次,即使它只是一个单一的发射/广播。
是否可以阻止它创建另一个侦听器实例,以便当已经有一个侦听器时,它不会创建一个新的侦听器。
javascript - Angular:将 $viewContentLoaded 附加到手动引导的应用程序
我有一个手动引导的角度模块。我试图让它$rootScope
附加一个事件侦听器$viewContentLoaded
。
这是我的代码:
我得到了一个范围$id=139
,并且事件没有在它应该触发的时候触发。
如果我尝试$rootScope
进入我的模块主控制器内部,我会得到:
我得到一个$rootScope
id 120 ???
如果我将事件附加到模块内的控制器,则事件处理程序会正常工作。
那我做错了什么?我怎样才能rootScope
在其控制器之外获得正确的模块?
我应该提到我有一个多应用程序环境。我有一个加载和引导其他模块的主模块,我想知道这个其他模块 viewContent 何时完成加载,而无需手动将代码添加到每个模块中......
注意:我可以得到$rootScope
这样的:
但这在$compileProvider.debugInfoEnabled(false);
:(
angularjs - PassportJS、AngularJS、$rootScope 函数未定义
我正在为 1 位管理员构建一个应用程序,以便能够登录和编辑内容。登录后,应用程序将提供一个私有的 html 文档结构,而不是那些未登录的普通公共文档。我正在使用 Angular-route、Session 和 Passport 进行身份验证。我想检查用户是否在他们链接到网站上的另一个页面时登录。所以,如果他们去到他们没有被授权去的地方,他们就不能编辑网站上的内容。
当我在本地主机上运行应用程序时,我得到了一个 $injector:modulerr 。ReferenceError 说 checkAuth 没有定义。
我尝试按照此处的建议使用 $rootScope 创建全局变量:
因此,如果用户已登录,我应该得到一个 true,如果他们没有登录,我将得到一个 false。但是,我仍然收到 checkAuth is not defined injector 错误,而且我从未看到任何控制台日志。
$rootScope 的 Angular 文档说要使用这种格式:
所以,我尝试了这个:
不幸的是,这也不起作用。
这是一起使用 Passport 和 Angular 的示例,我发现它有些帮助,但它们允许多个用户注册(我不想要),它仍然不能解决用于检查是否有全局函数的问题用户在网站的多个页面上登录。不过,它可能会帮助您查看类似的控制器和路由文件。
我知道您可以使用工厂和服务来做与之前类似问题中所建议的类似的事情,但我希望在尝试不同的路径之前先走这条路。显然,如果这是最好的方法,我会试一试。
angularjs - $scope.$on 未反映在视图中的更改
我正在做广播,在收听广播时,我试图更新我想在视图上显示的范围内的变量,但更改不会立即反映在视图中,直到我点击 UI . 任何人都知道此时应该做什么,我不想使用 $apply。在这里,请找到我的代码。
angularjs - 工厂中的 $rootScope.$broadcast 无法更改其他 $scope 中的值
我有一个主页模板(离子)有一个像这样的标签:
当其他范围内发生某些事情时,我希望更改 levelBadge 值。
在其他范围内,我有这个控制器(lessonCtrl)。当单击此视图上的按钮时,控制器会在此控制器内调用此函数:
在 MyFirebaseService (工厂)中,我有这个功能:
在我的主模板 homeTabCtrl 中,我正在听这样的升级事件:
但问题是,当我单击 courseCtrl 上的按钮时,levelBadge 没有得到更新,并且即使在我单击按钮后立即显示控制台日志“App received level up boardcast:”也不会显示徽章。
如果我像这样只听 homeTabCtrl 范围:
当我单击课程Ctrl 上的按钮时,什么也没有发生。
我不知道如何使 levelBadge 在我在课程Ctrl 中单击处于完全不同状态的按钮时动态更改。
更新:这是我的 ui-route:
所以家是一个抽象的状态。选项卡位于主模板中。courseCtrl 实际上处于另一个称为 App 的抽象状态。它们不是合作伙伴或子范围。只有2个不同的范围。