私はAngularでかなり単純なデモを構築しています.アプリにはメイン画面とメニューに相当するものがあり、画面の左側に常に表示されるメニューがあるランドスケープモードのタブレットアプリと同様です.右のコンテンツ。
メニューとメイン コンテンツ ページの両方に独自のコントローラーがあります。
メインページを表示したまま、メニューを展開して20%の幅に戻すことができるようにしようとしています.
私の問題は、メニューとメイン ページをアイテムとして保持するコントローラーを作成し、そのトップ レベル コントローラー内に menu と main_page コントローラーをネストしようとするのはやり過ぎのように思えることです。
私が今持っている限りでは
<body ng-controller="ViewCtrl"> <div id="menu" ng-controller="MenuCtrl" > <div ng-click="toggleMenu($event)" > メニューを開く </div> // メニュー ページ コンテンツのすべての ng-repeat </div> <div id="main" ng-controller="MainCtrl"> //メイン ページ コンテンツのすべての ng-repeat </div> <本体>
私のViewCtrlでは、私は持っています
関数 ViewCtrl($scope) { $scope.toggleMenu = 関数($イベント){ alert('クリック') } }
問題は、メニューが開いているかどうかを確認し、開いている場合は閉じるか、開いているかどうかを確認する方法が必要だと思うことです。メニューを開いたり閉じたりするときに、MenuCtrl と MainCtrl の両方にクラスを設定する必要があり、MainCtrl 内をクリックしてメニューを閉じることができるようにしたいと考えています。
これをAngularで処理する最良の方法は何ですか。
親にクラスを設定する方法はありますか?もしそうなら、私はそれを行うことができますか? または、div が角度モデルによって作成されていなくても、現在のコントローラー内で div を取得しますか? または、何らかの方法で既存の div をコントローラーに関連付けますか?
これらの種類のソリューションのほとんどは、非常に面倒に見えます。