directive 组件化拆分页面的时候碰到如下问题:
页面 ctrl 会加载 base 数据。各个组件(directive)也有各自的数据。因为 promise 的缘故,ctrl 和 directive 直接相互是不知道对方数据加载状态的。但是页面加载完成后我需要立即使用 base 数据+组件的数据(比如一些必选项)去读取价格。
我自己的思路大致如下:
1、让组件完全独立。也就是组件的link函数还是去读取一次base数据。
2、页面 ctrl 在加载 base 数据之后 broadcast 一次,然后组件再去读取相关数据进行处理。
希望得到的答案是:那种方式更优以及为什么,谢谢。(当然,欢迎更多其它思路。)
我做过的方法是将base数据放在一个service中,它要记录是否正在运行的状态,保证即使被多次调用,也执行一次数据获取,获取后将结果放在一个变量中。controller中用一个变量指向service的结果,watch这个变量,获得了有效数据后,执行后续操作。