在我的角度应用程序中,我有一个全局侧边栏导航指令,其中包括为用户提供全局搜索(带有一组条件,而不仅仅是文本字段)。
在搜索时,我想显示包含搜索结果的页面。
现在,侧边栏是在主app html中定义的,共享搜索结果数据的最佳方式是什么? 侧栏应该负责执行搜索吗?如果是这样,我如何将其数据分享到特定页面结果? 或者另一方面,也许特定的搜索结果页面应该负责这些数据?如果是这样,在执行搜索时如何将其与侧边栏搜索参数连接?
赞赏此方案的任何最佳做法。
答案 0 :(得分:2)
让你的未来更加光明的步骤:
main
,sidebar
,results
使用一个主要SearchResultsService
翻译每个数据之间的数据:
a)为每个密钥获取sidebar
过滤器集合true
或false
(密钥作为GET参数的名称,用于传递到后端的搜索API) );
b)根据results
模块方法序列化或反序列化数据;
d)如果需要,可以保留甚至缓存数据(用于无限滚动功能);
sidebar
和results
将是main
(子模块)的视图,因此您可以根据需要共享主控制器方法(noob方式)
当我面对这样的模块的实现时,我使用black magic来逃避$watch
和$on
事件系统。如果你还年轻 - 那么使用$on
将允许你通知每个模块有关重要的事情(例如分页更改,项目选择等),并将它们保持分开。
您可以将现有的侧边栏放在主模块中,但我已经从指令移动到使用自己的控制器和模板查看。
指令用于可重复使用的项目,用于粘贴功能。但是显然应该将dat侧边栏定义为app(aka模块)的单独部分,而不是指令。
P.S。保持控制器简单。 谷歌列表:
答案 1 :(得分:1)
Angular服务是使用依赖注入(DI)连接在一起的可替换对象。您可以使用服务在整个应用中组织和共享代码。