2013-07-23 93 views
0

我有一个搜索结果页面。搜索结果页面目前基本上是一个大型控制器。我有用于过滤器的代码,但是这不是一个angularjs过滤器,因为我正在进行另一个搜索到后端,我不只是返回一个不同的数组集。我想保留筛选器与搜索结果控制器分开,因为它已经很大了。我的问题是:我是否让它成为另一个控制器并将搜索结果广播更改为searchResults控制器,还是将它变为服务或者它实际上是一个过滤器?搜索结果过滤器 - 控制器或服务或过滤器?

我目前认为separete控制器更有意义,因为我仍然必须使用范围,但有了服务,我只能使用$ rootScope。

总的来说,知道什么需要过滤器和控制器会很好。

回答

0

这一切都取决于您想要进行数据过滤的位置。如果你是在服务器端做的话,那么我会把它放在你可能已经用来获取数据的服务中。如果您没有使用服务来获取数据,我建议先将其从控制器中拉出。

如果您只想抓取所有数据,然后在客户端处理过滤,那么您可以创建一个过滤模块并将其传递到应用中以在视图中调用。根据你的过滤的复杂程度,它可能就像使用Angular的内置过滤器一样简单。

很难得到更具体的,不知道你想要完成什么更多。

+0

目前它是一项服务,但我不得不使用很多$ rootScope,我不喜欢它。将过滤器和控制器连接到该控制器是一种更好的方式来做事吗? – Malcr001

+0

您通常不需要使用$ rootScope作为服务。通常你将模块传递给控制器​​并以这种方式使用它。就过滤器而言,很难说如果不知道你在过滤和反对什么。角度内置过滤器在缩小基于值的结果方面做得非常好。但是如果你做更多变革的东西,你需要自定义过滤器。 – Sharondio

+0

似乎angularjs过滤器只有在您完成所有需要做过滤的完整结果集时才有用,但事实并非如此。我的过滤器列表包含大量的过滤器选项,基本上有各种酒店标记各种设施等,但大部分工作是在后端完成。我在想,如果我不得不使用大量$ rootScope(我当时是这样),我应该让它成为一个控制器。 – Malcr001