2016-10-25 1 views
0

私はこの質問が私の頭の中に打ち込まれることはないと思っていますが、私はだからこそ密接に一緒に)私は前進し、私の自尊心を飲み、とにかく尋ねる頭の中で自分自身を打つことから遠いです。Angular.js:複数の部分文字のいずれかを表示しているときにインデックスファイルからdivを非表示にする

自己紹介Angular newbieとして、訪問者がそのページに特定の部分データを呼び出すと、インデックスファイル(レイアウトページ)にdivが表示されないという問題が発生しています。

私は約55の部分(スコープのクリープはすばらしいものです)があり、問題のあるディビジョンは12個には表示されません。ここで

は私のマークアップです:

<div ng-show="somename" id="somename" ng-controller="somenameCtrl"> 
         <div ng-include="'templates/somename.html'"></div> 
        </div> 

、ここでは私のコントローラである:

app.controller('somenameCtrl', function($scope, $route, $location) { 

    $scope.$on('$routeChangeSuccess', function() { 
     var path = $location.path(); 
     console.log(path); 
     $scope.somename = true; 
     if (path === '/thatpage') { 
     $scope.somename = true; 
     } else if (path === '/thispage') { 
     $scope.somename = false; 
    } 
}); 
}); 

私は、これは前方に最も簡単な方法であると考えましたが、今私は(ようなあまり確信しています私はインデックスファイルからdivを隠すためにいくつかの部分的な部分があります。 divは 'thispage'に表示されておらず、 'thatpage'に正しく表示されています( 'thispage'以外の部分は呼び出されます)。

しかし、私は 'thispage2' - > 'thispage12'とそれ以外のものには何も表示しないでください。どのように私がこれを達成できるかについての考え方は?

ご迷惑をおかけして申し訳ありませんが、より明確に与える。

+0

使用しているルーティングの形式は何ですか? nRRouteまたはuiRouter? – nikjohn

答えて

2

を角度でこれを行うのは、多くの方法があります。あまりにも多くの。

私はあなたがUI-ルータを使用と仮定していますまたはng-routerです。どちらのルータも、resolveメソッドを持っています。その後、

.when('/someRoute', { 
    templateUrl: '...', 
    controller: '...', 
    resolve: { 
     SomeName: false; 
    } 
    }) 

そして、あなたのコントローラでこれを含める:あなたが定義した各ルート/状態では、あなたがそうのようなSomeName変数に渡すことができ

.controller(function(SomeName, $scope) { 
    $scope.somename = SomeName || false; 
} 

この道を、あなたはSomeName変数を定義する必要がありますは、それが真であるルートでのみです。定義されていない場合にはfalseにデフォルトしまうので、あなたはすべてのルートでそれを定義する必要はありません

もちろん、同様にこれを行う他の方法がありますが、これは最もクリーンな方法のように私には思える

+0

ありがとう@nikjohn - 私は今これで亀裂があります。あなたはかなり正しいです、私はngRouteを使用しています。 – TalliSep

関連する問題