我们需要多个控制器来实现angularjs中的路由吗?

时间:2014-03-05 10:18:13

标签: angularjs ng-view

我可能无法正确解释我的问题。让我尝试。

我正在使用angular开发单页面应用程序。这个应用程序基本上显示在线小说系列的剧集。有一个导航栏,其中包含查询菜单(如,最新剧集,特定日期的剧集,具有特定标签的剧集等)。对于每个查询,我想要一个单独的URL。

/latest - 应显示最新一集

/tag/:tagname - 应该返回带有该标记的所有剧集。

对于所有这些查询,结果视图是相同的(剧集列表)。所以我将对所有路线使用相同的部分。

我的问题是,我是否应该为每个查询创建一个新的控制器?比如,LatestEpisodeControllerTagController

无论如何,我可以使用url来确定用户想要什么并在同一个控制器中运行该查询吗?

3 个答案:

答案 0 :(得分:2)

当然你可以在路由定义中使用相同的控制器,问题是什么目的呢?稍后进行调试会更糟糕,如果你有共享功能,最好把它变成工厂或服务,然后在控制器中使用。

但答案是肯定的,您可以使用相同的控制器并根据$ location.path()实现不同的行为

答案 1 :(得分:2)

是的,你可以使用单个控制器进行多次路由.. 您可以在控制器中创建不同的功能,并在每个功能中执行相应的工作。 在我的情况下,我为不同的URL创建了不同的html页面,并为html页面注册了相同的控制器,在html页面中,我在div部分使用ng-init调用了控制器方法。

答案 2 :(得分:1)

您可以根据需要使用相同的控制器和相同的视图... 如果您愿意,$ location可以帮助您获取当前路径或完整网址,您可以根据自己的路径致电您的服务......

我在这里写一个小例子来获取想法

PLUNKER