Javascript AngularJS-Child指令使用与父指令相同的数据。如何分享?
我有一个child指令,它需要与使用它的某些父页面相同的数据 共享数据的最佳方式是什么 child指令是否应该与父指令进行相同的API调用Javascript AngularJS-Child指令使用与父指令相同的数据。如何分享?,javascript,angularjs,Javascript,Angularjs,我有一个child指令,它需要与使用它的某些父页面相同的数据 共享数据的最佳方式是什么 child指令是否应该与父指令进行相同的API调用 或者父级是否应该通过属性向指令发送数据 我想你描述了正确的解决方案。最好将数据传递给指令槽属性,并使指令仅显示该属性。 但是,如果您仍然希望在指令中调用api,那么我建议提取对服务的api调用,并在服务中缓存承诺。这可能很有用 我想这要看情况而定 如果父指令和子指令要单独重复使用(意味着可以使用其中一个而不使用另一个),那么您肯定希望使用attributes
或者父级是否应该通过属性向指令发送数据 我想你描述了正确的解决方案。最好将数据传递给指令槽属性,并使指令仅显示该属性。
但是,如果您仍然希望在指令中调用api,那么我建议提取对服务的api调用,并在服务中缓存承诺。这可能很有用 我想这要看情况而定 如果父指令和子指令要单独重复使用(意味着可以使用其中一个而不使用另一个),那么您肯定希望使用attributes API将数据传递到子指令中 如果它们总是一起使用,则可以执行以下操作之一:
- 使用属性传递值
- 从子作用域中删除隔离作用域,让子作用域继承父作用域中的值。我讨厌人们这样做,但对每个人都是这样李>
- 有一个缓存值的服务,它们都调用该服务并返回相同的值李>
- 您可以让父作用域使用作用域事件系统将数据广播到它的子作用域李>
祝你好运 谢谢@Evgeniy。我的API调用当前通过服务执行。然而,这仍然意味着我要调用API两次。我将查看插件,看看它是否有帮助,但是我很好奇是否有一种纯粹的角度方法来实现这一点。我觉得这是一个常见的问题,谢谢!我对方法(3)非常感兴趣,即服务缓存值以便父级和子级都可以使用。事实上,我也发布了一个类似的问题。这是如何实现的?我是否只是从服务中声明变量供调用方使用?这会违背任何避免在服务中存储数据的狭隘规则吗@如果数据量很大,则可能会造成内存泄漏。因此,在调用服务以获取代码的代码中,可能需要在('$destroy',fn)侦听器上添加$scope.$,在destroy函数中,可以调用服务并从服务中删除数据。我建议不要直接返回数据。始终返回使用数据解决的承诺。这是你应该遵循的模式。还有其他问题吗?还有,看看$cacheFactory。它将帮助您使用过期的缓存等。如果您使用的是angular 1.4,那么只需执行以下操作:if(self.userName)返回$q.resolve(self.userName);这将允许您始终对承诺的api进行编码,而不是有时返回数据,有时返回承诺。你知道吗?太棒了!感谢您的解释和代码示例,这对我来说更清楚了。我将尝试一下,并向@aaronfrost汇报