Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度导航:为不同视图显示不同的子导航_Javascript_Angularjs_Model View Controller - Fatal编程技术网

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

Javascript 角度导航:为不同视图显示不同的子导航,javascript,angularjs,model-view-controller,Javascript,Angularjs,Model View Controller,在我的应用程序中,我有一个跨页面/视图一致的菜单,还有一个子菜单,显示每个主页/视图的不同链接(到更多嵌套子页面)。我不确定如何更改子菜单。现在,我在主体中有菜单和子菜单,还有一个ng视图元素 首先,我认为我将为子菜单创建一个控制器,并在子页面数组上循环显示,随着主页/视图的更改更新该数组。这看起来很麻烦,也不直观,因为我必须在这个单独的控制器中为每个页面保留一个子页面列表,而实际上,它们是主页/视图逻辑的一部分,不是吗? 然后,我再次阅读了angular ui路由器及其嵌套视图实现——我是否应

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

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

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

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

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

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


我希望这有帮助

因此,基本上,您建议添加一个指令来呈现子菜单,它将根据$location更改进行更新,例如?对于我遇到的这个具体问题,子菜单应该始终列出页面中的任何子页面,无论用户的层次结构有多深。我认为你试图将它们按功能领域分组的方法是明智的建议。在这种情况下,我会将进入子菜单的项目作为主控制器的某种“属性”,是吗?是的,这正是我的想法。作为一个更具体的例子,请访问stackexchange.com/sites了解我的想法。您可以将选项“所有站点”、“热门问题”、“过滤问题”等视为不同的功能区域,每个功能区域都有自己的控制器支持(也意味着自己的范围和模型)。每个网站都有自己的菜单选项——例如,“所有网站”都有“全部”、“技术”、“文化”等。。您可以将该列表表示为AllSitesCtrl的一个属性(假设在该级别处理用户交互相当简单)。鉴于我的问题在概念级别上请求帮助时相当模糊,我认为您的回答在尝试分类和处理此问题时对我帮助最大。我会尝试实施不同的建议,看看哪一个最适合这种情况。这是一种选择,但感觉更像是试图回避问题,而不是解决问题。谢谢你的建议。