0

我正在用角度构建一个相当简单的演示,该应用程序具有相当于主屏幕和菜单的功能,类似于横向模式平板电脑应用程序,其中屏幕左侧有一个始终可见的菜单,而主右边的内容。

菜单和主内容页面都有自己的控制器。

我正在努力做到这一点,以便我可以展开菜单,并再次将其折叠回 20% 宽度,同时保持主页在视图中。

我的问题是,创建一个将菜单和主页作为项目保存的控制器,然后尝试将菜单和 main_page 控制器嵌套在该顶级控制器中似乎有点过头了。

据我现在所拥有的是

<body ng-controller="ViewCtrl">
   <div id="menu" ng-controller="MenuCtrl" >
       <div ng-click="toggleMenu($event)" > 打开菜单 </div>
       // 我所有的菜单页面内容的 ng-repeats
   </div>
   <div id="main" ng-controller="MainCtrl">
       //我所有的 ng-repeats 用于主页内容
   </div>
<正文>  

在我的 ViewCtrl 中,我有

函数 ViewCtrl($scope) {
    $scope.toggleMenu = function($event){
        警报(“点击”)
    }
}

问题是我认为我需要一种方法来检查菜单是否打开,如果是,则关闭它,否则,打开它。当菜单打开和关闭时,我必须在 MenuCtrl 和 MainCtrl 上设置类,并且我希望能够通过在 MainCtrl 中单击来关闭菜单。

用角度处理这个问题的最佳方法是什么。

有没有办法在父母身上设置一个班级,如果是这样,我可以这样做吗?或者在当前控制器中获取任何 div,即使 div 不是由角度模型创建的?或者我是否以某种方式将现有的 div 与控制器相关联?

大多数这类解决方案看起来都很混乱。

4

1 回答 1

2

问题是我认为我需要一种方法来检查菜单是否打开,如果是,则关闭它,否则,打开它。当菜单打开和关闭时,我必须在 MenuCtrl 和 MainCtrl 上设置类,并且我希望能够通过在 MainCtrl 中单击来关闭菜单。

有两种方法可以做到这一点。

  1. 您可以在中触发自定义角度事件MainCtrl并在MenuCtrl.

  2. 您可以在父范围(恰好是)上设置标志(模型ViewCtrl)。

注意:您不应该从控制器修改 DOM 元素的类。为此应使用指令。

于 2013-08-19T12:12:07.853 回答