6

現在のビューに応じてページ ヘッダーを変更しようとしています。ヘッダーは ngView の外部にあります。それは可能ですか、それともヘッダーをビュー内に配置する必要がありますか?

私のコードは次のようになります。

<div id="header">
    <div ng-switch on="pagename">
        <div ng-switch-when="home">Welcome!</div>
        <div ng-switch-when="product-list">Our products</div>
        <div ng-switch-when="contact">Contact us</div>
    </div>
    (a lot of unrelated code goes here)    
</div>

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

4 に答える 4

10

ルートを定義するときに、各ルートに名前を付けます。次に、コントローラーに $route を注入し、コントローラーにそれを現在のスコープに公開させます。その後、ng-switch を $route.current.name にバインドできます。

于 2012-09-03T15:15:15.980 に答える
9

$locationサービスを注入して確認することができ$location.path()ます。http://docs.angularjs.org/api/ng.$location

JS:

function Ctrl($scope, $location) {
  $scope.pagename = function() { return $location.path(); };
};

HTML:

<div id="header">
  <div ng-switch on="pagename()">
    <div ng-switch-when="/home">Welcome!</div>
    <div ng-switch-when="/product-list">Our products</div>
    <div ng-switch-when="/contact">Contact us</div>
  </div>
</div>
于 2012-09-02T02:43:14.560 に答える
1

ヘッダーとコンテンツのコントローラーが異なるようです。コントローラー間の通信の最良の方法はサービスです。別の方法 - イベント。Vojtaの回答を参照してください

于 2012-09-02T01:07:46.107 に答える