0

テンプレートを index.html に動的に含めようとしています。index.html の一般的な構造は次のとおりです。

<body>

  <header ng-controller="Main">
    <section>
      <!-- global stuff -->
    </section>
    <section ng-include="moduleName + '/views/menubar.html'">
      <!-- module-based stuff -->
    </section>
  </header>

  <div id="view" ng-view></div>

</body>

サンプル URL

example.com/<app_name>/index.html#/<module_name>[/method_name]

$scope.moduleNameルートが変更されたときに更新する方法がわかりません。私の問題は 2 つあります。

  1. ヘッダーのコントローラーはMainであり、ビューに関連付けられたコントローラーではないので、できませんか? ビューのコントローラーから更新$scope.moduleNameします ( Mainとビューのコントローラーは兄弟であるため)。

  2. Mainに を設定してみましたが$scope.$on('$routeChangeSuccess',…)、どうやら経路変更が通知されないようです

私は $rootScope.$on リスナーを設定して ( SO#15355346で説明されているように) ルートを変更して子にブロードキャストすることを考えました。子はルートを元に戻します。メイン。しかし、それは凶悪なようです。

そして、ヘッダーをng-viewの外に置いておきたいと思います。

編集$route.current.scopewith という名前のオブジェクトがあることに気付きましたmodule_name(おそらく、ルートの module_name に関連付けられているコントローラーの名前が同じであるため)。どうにかしてそのオブジェクトの名前を使用できるのではないかと考えています…</p>

4

1 に答える 1

1

全体像がなければ、コードの何が問題なのかを判断するのは困難です。あなたが見せるものは私にはよく見えます。

それを行う能力を示すために作成したこのプランクを参照してください。次のように、ルート オブジェクトをカスタム プロパティで拡張することもできることに注意してくださいmoduleName

    $routeProvider.when('/page1', {
        template: 'one',
        controller: 'one',
        moduleName: 'firstModule'
    });
于 2013-05-30T18:41:06.673 に答える