问题标签 [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 - 当在其他控制器中广播时,如何避免 ng-repeat 中的 $scope 变量之间的数据混合?
我有两个控制器。在一个控制器中,我将数据存储在不同类别和不同周和天的范围变量中。这是相同的功能:
请注意,我正在使用这个单一功能获取所有类别的周列表数据。
然后我正在使用这个:
然后我像这样在另一个控制器中广播它:
但是当我切换公司时,一个类别的周数会出现在另一个类别中,当我再次单击该公司时,数据会发生变化。这是更新公司的功能。
如果有人能在这里告诉我这个问题,我将不胜感激。我已经尽力了,但没有运气。
谢谢。
javascript - 观看 angularjs $rootScope 变量
我正在使用 $rootScope 在我的应用程序运行函数中初始化一个函数,如下所示 -
现在,当在控制器中我正在尝试这个 -
如果 $rootScope.user 已经设置,它工作正常。但是如果在这种情况下它必须调用 $rootScope.getUser() 它会给出一个错误 -
所以,我想知道可能是因为 getUser 是一个异步调用,如果它是我如何解决这个问题,如果它不是我哪里出错了,请建议
angularjs - 茉莉花间谍 $rootScope
问题:
- 使用 AngularJs
- 给定一个实现的服务
- 尝试用 Jasmine 测试它
这是我的服务的样子:
这就是我试图测试是否$rootScope.$on
已被调用的方法:
我得到的是一条错误消息,说:
预计 spy $on 会被调用...(blabla),但它从未被调用过。
我已经尝试了几乎所有类似的方法: - 在此创建 rootscope 是:$rootScope = $rootScope.$new();
-$rootScope.$on
以这种方式进行间谍活动:spyOn($rootScope.prototype, "$on")
但两者都没有工作。有人知道如何以正确的方式测试它吗?
编辑1:
原始代码似乎可以正常工作,所以我在这里粘贴了我拥有的确切代码。所以我的服务看起来就像这样:
编辑2:
我放了一些 console.log 来看看代码是如何执行的:
对于 self.init 函数中第一行的代码:
结果是: 'init runs' 'before' 'after'
奇怪的!知道为什么吗?
angularjs - rootScope 正在更新范围变量更新
我创建了一个 rootScope 变量,例如
data
我从 api 的返回值在哪里。还要创建一个范围变量,它是一个包含项目列表的对象。
在 HTML 上,我有:
这里ValidRatingHeatSource
是
在更改下拉菜单时,我编写了一个函数。在那里面
到现在为止是我当前的代码。问题是:
当调用上述函数时,只要当前$rootScope
变量 ie$rootScope.globalData.chillerConditions.HeatSource.Value
更改为"HW"
or"ST"
它也更改$scope.chillerConditions.HeatSource.Value
为"HW"
or "ST"
。
为什么这样?
angularjs中是否有任何内置功能?请建议我是否犯了任何错误?也欢迎新的建议。
javascript - Angular JS如何将值从rootscope传递到ng-model?
我在 rootscope 中有对象,我想在表单输入中显示一些值。
我试过以下:
但这不起作用。
我应该如何将价值传递给 ng-model?
谢谢你的帮助。
angularjs - 在单页应用程序中使用 $rootScope 的 ngHide/ngShow
再次向大家寻求 AngularJS 的帮助。我正在构建一个 SPA,其中我的布局(主)页面分为三个部分,左侧导航栏、中心内容、右侧项目列表栏。当我加载我的主页时,我的正确项目列表应该被隐藏,但应该在其余屏幕中可见。我在 homeController 中创建了一个 $rootScope 变量,并根据位置路径将值设置为“true”,并在模板中使用该变量将值设置为 ngHide。当我在使用 SPA 时导航到不同的页面时,我的左右栏不会再次加载,只有我的中心内容才会加载,这是一个新视图。在将数据发送到新视图模板的控制器中加载新视图时,我将在 homeController 中创建的 $rootScope 变量重置为' false',但我的右栏仍然不可见。我可以看到 ng-hidden 类仍在运行,尽管 interpollation 已将值更新为“true”。任何建议将不胜感激。
来自布局页面的标记:
家庭控制器代码:
类别控制器代码:这是我重置 $rootScope 变量值的地方
angularjs - 无法配置 rootScope 来设置路由地址
在 .config 阶段将路由地址加载到 routeProvider 时,我想同时在 下设置路由地址$rootScope
,以便所有其他服务可以正确访问路由。例如,像这样:
但是,我发现并研究了它不可能$rootScope
在 .config 点进行配置。
如果可以$rootScope
通过将另一个对象附加到其上来进行配置,我可以问一下这样做的方法,如果可能的话,一个例子将是一个很大的帮助。如果没有,我想知道是否有更好的方法和更有效的方法来存储路由位置字符串,partials/confirmed.html
这样当我只需要配置一次路由位置字符串而不是全部围绕时,所有其他服务都可以正确访问路由所有服务中的文件?
javascript - 对 AngularJS $rootScope.$emit 的效果进行单元测试
我正在编写一个 AngularJS 单元测试,它发出和事件,然后调用服务以查看事件是否被正确处理。
我的服务以常规方式实现事件监听器:
虽然我的测试目前通过了,但我担心我的事件侦听器可能正在异步处理。
我的问题是,$rootScope.$digest()
在我的期望之前调用是否足以确保所有事件侦听器都已被调用并返回?
angularjs - 如何在不同的 HTML 页面中更改 AngularJS 范围?
我希望有人可以帮助我解决这个问题,这真的让我发疯:PI 创建了一个 Plunker 来说明这个问题。在此处查看演示http://plnkr.co/edit/BRlDgKYlE87Bh3t53tpZ?p=preview。
所以我的问题是我无法在我所在的不同 html 视图中更改我的范围值。正如 Plunker 所示,我在 index.html 中有两个按钮;按钮 1 和按钮 2。当我单击 button1 时,我希望 scope.test 更改为“button1”,当我单击 button2 时,它应该更改为“button2”,该值存在于 index2.html 中。正如您在 console.log 消息中看到的那样,这永远不会发生。我使用 rootscope,但如果范围存在于同一个 html 页面中而不是另一个页面中,我仍然只能更改值。请帮忙!