角度导航:为不同的视图显示不同的子导航

时间:2013-09-29 19:04:05

标签: javascript angularjs model-view-controller

我仍然试图围绕如何在概念层面上使用Angular和单页Web应用程序来处理事情,所以请与我一起讨论这个相当微不足道的看似问题。

在我的应用程序中,我有一个跨页面/视图一致的菜单,以及一个子菜单,显示每个主页面/视图的不同链接(更多嵌套子页面)。我不确定如何更改子菜单。现在,我在body中都有菜单和子菜单,以及ng-view元素。

首先,我想我将为子菜单创建一个控制器并循环显示子页面数组,在主页面/视图更改时更新数组。这看起来既麻烦又不直观,因为我必须在这个单独的控制器中保留每个页面的子页面列表,实际上,它们是主页面/视图逻辑的一部分,不是吗? 然后,我再次阅读有关角度ui路由器及其嵌套视图的实现 - 我是否应该将子菜单视为嵌套视图?

我知道很高兴看到我的实际代码,但我更加努力解决这个问题,而不是如何实现它。在我看来,像每个页面/视图更改子菜单这样的东西必须是一个常见的问题,对于如何解决它有很好的建议。

3 个答案:

答案 0 :(得分:1)

这是一个很好的问题。  我认为对于主要流程使用路径和内部面板使用小部件。创建编译模板的指令。 我构建了一个动态窗口小部件,您可以在here

中阅读它

答案 1 :(得分:1)

我不确定我是否正确了解您的情况 - 我假设有一个顶级导航栏,其中每个导航栏项都有一组子项(子导航栏)。此外,每个顶级导航栏项目代表一个独特的功能区域,因此每个项目都有自己的模型。希望这接近你的情况。 鉴于此,我认为您可以为每个顶级导航栏项目(即每个功能区域)设置单独的控制器。这些控制器中的每一个都是顶级控制器的子控制器,每个控制器都可能有自己的子控制器。 换句话说,它可以帮助您根据不同的功能区域来考虑您的应用程序,并为每个区域使用MVC模式。这可能会更容易推理您的应用程序,并且更容易编写测试,而不是使用单个控制器来表示所有内容。

我希望有帮助..

答案 2 :(得分:0)

您可以为每个子菜单使用ngShow指令,并使用代码来决定是否应该显示。您可能需要为每个子菜单使用不同的功能,这些功能可能会显示也可能不会显示。需要隐藏这些功能。