Angularjs如何通过$ http在两个指令之间共享数据
问题描述:
我有两个指令。每个指令的链接中都有一个异步函数,如$http
或ngResource
。我想单击按钮A通过指令A从后端获取数据,然后更改指令B及其视图中的数据。
我尝试使用数据服务$boastcast
,因为大多数人都会在指令A和B之间共享数据,并使用$apply
来更新视图。但我经常遇到inprog错误。那么解决这个问题的最好方法是什么?
答
当你跑步时出现错误$scope.$apply
。当您尝试手动运行消化循环,是alread乳宁然后这个异常会发生
所以检查摘要在使用前运行应用
if(!$scope.$$phase) { $scope.$apply() }
+0
可能它会工作,但今天它被认为是坏习惯。首先你有$ scope的依赖,我们应该尽量避免。其次,$$阶段是内部Angular事物。它可以通过使用包装代码im $ timeout而不是$ apply来包装代码来解决。只有在循环未运行时,$ timeout才会调用digest循环。 –
答
而不是包装代码$申请,尝试注入$ timeout并用$ timeout包装你的代码。只有当循环未运行时,它才会以安全的方式运行消化循环。
嗨。请发布您的代码 – Akashii
提供[mcve]。可能甚至不需要广播,并且很可能不需要$ apply() – charlietfl