2013-06-03 3 views
8

私はAngularJSを初めて使いました。それはかなり複雑で、私のアプローチは新しいので、少し混乱しています。AngularJS:グローバルメニュープロバイダ、サービス、またはrootScopeの正しい場所?

私は古典的なバックグラウンド(サーバー側のテンプレート言語[Yii、django、Smarty] +物事を少し動的にするjQuery)のものです。

のは、私は、メニューバー(ブートストラップナビゲーションバー、または何か他のもの)があるとしましょう - メインページの外コンテンツに住んでいる要素、このような:

<body> 
    <div id="menubar"> 
    ... <!-- menu content --> 
    </div> 
    <div class="container"> 
    <div ng-view></div> 
    </div> 
</body> 

は、今私が好きなのメニューをビット動的にする、すなわちコントローラ内のいくつかのメニュー項目を追加または削除する。 サーバー側のフレームワーク&テンプレートシステム、たとえばYii - BaseControllerクラスの変数は$menuItemsで、menuBarで毎回レンダリングし、すべてのコントローラはBaseControllerから継承して項目を変更できます。

また、メニューバー内にあるsearchFormを処理する関数が必要です。それはどこに住んでいますか?

このような角度には何がありますか?今のところ私はカスタムserviceを作成するか、または$rootScopeを拡張することを考えていました。

+1

exampleアプリを見ましたか? https://github.com/IgorMinar/foodme – vittore

+0

@vittoreありがとう、私はこれを知らなかった。私は、ng-viewと一緒にng-controllerを使うことができないことを知りませんでした:)それをいくつかの共有サービスと組み合わせることは、やってみるべきです。コメントではなく返事にして、それを答えとしてマークします。 – migajek

+0

[角モジュールでのグローバル通信:イベントバスまたはメディエータパターン/サービス]の重複可能性(http://stackoverflow.com/questions/27356299/global-communication-in-angular-module-event-bus-or-mediator-パターンサービス) –

答えて

9

UPDATE:私はangular.jsを採用する2番目のステップを言うようJohn Papa's ng-demoesstyle-guideを見てみることをお勧めします。

最近投稿されたangular.jsチームの例をご覧ください。完全なアプリケーションを表示します。角度の以下の機能へ

ご注意はあなた

私はそれが起こっているディレクティブで '='、 '&'、 '@' スコープバインディングdirective

  • のtemplateUrlプロパティを信じてあなたがそれを記述した方法でメニューをレンダリングするためのサービスと命令の組み合わせを持つ良いアプローチ。

  • 関連する問題