我正在以角度构建一个相当简单的演示,应用程序具有相当于主屏幕和菜单的功能,类似于横向模式平板电脑应用程序,其中屏幕左侧有一个始终可见的菜单,以及右边的主要内容。
菜单和主要内容页面都有自己的控制器。
我正在努力使其能够扩展菜单,并将其再次折叠回20%宽度,同时保持主页面的可见性。
我的问题是,创建一个将菜单和主页保存为项目的控制器似乎有点过分,然后尝试将菜单和main_page控制器嵌套在该顶级控制器中。
就我现在所知,是
<body ng-controller="ViewCtrl"> <div id="menu" ng-controller="MenuCtrl" > <div ng-click="toggleMenu($event)" > open menu </div> // all my ng-repeats for menu page content </div> <div id="main" ng-controller="MainCtrl"> //all my ng-repeats for the main page content </div> <body>
在我的ViewCtrl中,我有
function ViewCtrl($scope) { $scope.toggleMenu = function($event){ alert('clicked') } }
问题是我认为我需要一种方法来检查菜单是否打开,如果是,请关闭它,否则打开它。当菜单打开和关闭时,我必须在MenuCtrl和MainCtrl上设置类,并且我希望能够通过MainCtrl中的单击关闭菜单。
用角度来处理这个问题的最佳方法是什么?
有没有办法在父母上设置课程,如果有的话,我会这样做吗?或者在当前控制器中获取任何div,即使div不是由角度模型创建的?或者我以某种方式将现有的div与控制器关联起来?
这些解决方案中的大多数似乎都很混乱。
答案 0 :(得分:2)
问题是我认为我需要一种方法来检查菜单是否打开,如果是,请关闭它,否则打开它。当菜单打开和关闭时,我必须在MenuCtrl和MainCtrl上设置类,并且我希望能够通过MainCtrl中的单击关闭菜单。
有两种方法可以实现这一目标。
您可以在MainCtrl
中触发自定义angular events并在MenuCtrl
中收听。
您可以在父作用域上设置标记(模型)(恰好是ViewCtrl
)。
注意:您不应该从控制器修改DOM元素的类。应该使用指令。