Angularjs如何通过$ http在两个指令之间共享数据

Angularjs如何通过$ http在两个指令之间共享数据

问题描述:

我有两个指令。每个指令的链接中都有一个异步函数,如$httpngResource。我想单击按钮A通过指令A从后端获取数据,然后更改指令B及其视图中的数据。

我尝试使用数据服务$boastcast,因为大多数人都会在指令A和B之间共享数据,并使用$apply来更新视图。但我经常遇到inprog错误。那么解决这个问题的最好方法是什么?

+0

嗨。请发布您的代码 – Akashii

+2

提供[mcve]。可能甚至不需要广播,并且很可能不需要$ apply() – charlietfl

当你跑步时出现错误$scope.$apply。当您尝试手动运行消化循环,是alread乳宁然后这个异常会发生

所以检查摘要在使用前运行应用

if(!$scope.$$phase) { $scope.$apply() }

+0

可能它会工作,但今天它被认为是坏习惯。首先你有$ scope的依赖,我们应该尽量避免。其次,$$阶段是内部Angular事物。它可以通过使用包装代码im $ timeout而不是$ apply来包装代码来解决。只有在循环未运行时,$ timeout才会调用digest循环。 –

而不是包装代码$申请,尝试注入$ timeout并用$ timeout包装你的代码。只有当循环未运行时,它才会以安全的方式运行消化循环。