问题标签 [angularjs-service]
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.
arrays - 无法让数组的简单推送/拼接工作 - AngularJS
请查看以下 Plunker 项目。
我想保留多个控制器可以访问的服务中的项目列表。在此示例中,当您选择姓氏时,它将出现在列表中。但是,如果您设置第二个名称,则列表将被清除。我只是无法弄清楚 $scope.$watch 中的逻辑
用户还应该能够选择“请选择”选项以从列表中删除名称。然后,您应该会看到选择了姓氏的所有项目的列表。如图所示,下面的列表应为:
- 马特·迪夫
- 汤姆坎蒂
http://plnkr.co/edit/pbeLvR?p=preview
我还在看这个我只需要从我的代码中抽象出来,以防我在那里做错了什么。
data-binding - 单页应用程序、永久链接和 ngView?
这是我当前的设置,每一列都由一个控制器表示:
此外,每一列都有一些信息(一个或多个变量和对象),在修改时需要将其传播到其邻居。
目前,我通过使用工厂并将其注入相关控制器来共享这些变量。
现在我想永久链接变量值,例如:
这也应该允许我移除我的工厂。
实现此设置的最佳方法是什么,例如:ngView
答案是什么?
javascript - AngularJS:如何将值从控制器传递到服务方法?
我有一个依赖于TransactionService
. 其中一种方法是
看起来TransactionService
像
如您所见,该方法getForMonthAndYear
取决于两个参数month
和year
,它们现在被硬编码为params: {month: 5, year: 2013}
. 如何从我的控制器传递这些数据?
我尝试注入rootScope
,TransactionService
但这没有帮助(这意味着我可能不知道如何使用它)。
Angular ngResource文档也不推荐任何方式来执行此操作。
有人可以在这里指导吗?
更新
我的控制器看起来像
我将服务方法更改为
我看着console.log
它,它说
angularjs - Angularjs 异步回调在 $scope.$apply() 下返回未定义;
这是我的工厂代码。回调是异步的,所以我把它放在 $rootScope.safeApply() 下。然后我在我的控制器中调用console.log(authService.authUser),但是当用户登录时它仍然返回未定义。但是如果用户没有登录并且会在控制台中显示“未登录”,它会找到。任何想法?
更新
在控制器中
更新 2
现在一切正常,我可以监控用户登录状态。但是还是有问题。检查下面的代码
angularjs - 修改多个 AngularJS 指令之间的共享变量
我创建了这个jsfiddle:
http://jsfiddle.net/noahgoodrich/CDwfL/1/
我创建了一组指令来管理和操作导航选项卡。出于某种原因,当我尝试关闭选项卡时,它最初会删除适当的数组元素,但随后该元素被替换为空元素。打开选项卡似乎按预期工作。
谁能提供有关我如何错误使用的见解navTabsService
?或者是和指令link()
中的功能有关的东西?navTabOpen
navTabClose
unit-testing - 使用依赖项测试 AngularJS 服务
我在 AngularJS 中测试一个简单的服务时遇到了一些问题,该服务依赖于另一个服务。
该服务看起来有点像这样:
一开始我只是尝试使用 window.location.pathname 而不是创建服务,但它似乎是能够模拟它的错误方法。因此,我创建了 urlService,它基本上是窗口对象的简单包装器。
然后我的 filtersServiceTest 看起来像这样:
但这似乎不起作用。在实际运行之前,我不能重载 urlServiceMock。我可以更改“ beforeEach
”每个,以便 getPathName 返回“test”,但是我将无法测试 url 不等于 test 的场景。
angularjs - 启动新控制器时停止 $timeout
我每 2 秒轮询一次我的数据,以使它们在页面上保持更新。我的问题是当我访问另一个页面时,超时保持有效。访问新页面时如何取消超时?
//编辑我找到了一个解决方案,但我不确定它是否是一个好的解决方案。当我将超时保存到 $rootScope 时,我可以在所有其他控制器中取消它。
javascript - 在控制器和指令之间传递服务
我有一个单一的服务定义如下:
然后将该服务注入到多个控制器中,根据各种指令(其中一些具有隔离范围)。只有其中一个(截至目前)实际执行了获取(和结果集)操作,但用户可以通过点击交互重复执行获取操作。
其他控制器绑定如下:
或者
在这两种情况下,当服务中的值更改时,变量都不会自动更新。
$watch
像这样设置:
也永远不会触发(在这两种情况下)。
资源回调中的两行注释:
mySource 那时被实例化为{}
. 这并没有解决问题。
是以前尝试并重用同一个对象的尝试。
我发现解决此限制的一种方法是像这样设置 $watch :
但是,我发现这令人担忧,因为我不希望此功能在后台持续运行。(这是如何工作的?该功能多久运行一次?$digest
触发多少次迭代?该解决方案的效率如何?)
我怎样才能解决这个问题?如果愿意,我如何“通过引用”绑定到服务变量?
可能有更好的方法吗?我尝试过事件,但是由于其中一些元素是同级元素,这会导致链过于复杂,其中一个孩子可能会$emit
向上让一个联合父级的侦听器捕获一个事件并$broadcast
退出。
还有哪些其他方法?
angularjs - 回收AngularJS函数
我对 AngularJS 很陌生,但想知道如何在控制器范围之外创建常用功能。
例如,我经常需要调用一个函数来启动一个“加载”微调器(用于 RESTful 调用等)。我尝试添加一个 showLoadingModal() 函数作为服务,但这些似乎只适用于从我看到的内容中检索数据。我是否必须将此功能添加到我的所有控制器,或者您可以以某种方式创建应用程序级功能?