2017-08-10 14 views
0

anglejsのコードのような自分のルータを作成する必要があるのは、単純なプラグインシステムを使ってルートを動的に追加する必要があるからです。私はこのようなナビゲーションを持っています。このような#を使わないでハッシュを使用してください! in anglejs in router

<ul> 
    <li><a href="#page1">page1</a></li> 
    <li><a href="#page2">page2</a></li> 
</ul> 

と私のコントローラの外観:

app.controller('main', function($scope) { 
    let set =() => { 
     this.panel = location.hash.replace(/^#/, ''); 
    }; 

    $(window).on('hashchange',() => { 
     $scope.$apply(set); 
    }); 
    set(); 
}); 

私は別のパネルが表示されますが、コントローラパネルのプロパティに依存します。

私は#!#page1のリンクをクリックしたらどうすれば#!#を防ぎ、#page1をハッシュにすることができますか?または、#!/ page1(ルータを追加せずに)の場合は、href = "page1"を追加しているので、存在しないページへの通常のリンクがあります(角度外)。

+0

'.config()'ブロックに '$ locationProvider.html5Mode(真);'を書きます –

+0

[ハッシュ '#'なしのAngularJSルーティングの可能な複製]( https://stackoverflow.com/questions/14319967/angularjs-routing-without-the-hash) –

+0

@William私はルータを使用しないため、ハンプシャーは別の質問。 – jcubic

答えて

2

あなたが削除する必要があるハッシュ・バングはありますか(#!)。そのために、あなたは、たとえば、あなた

<base href="/"> 

のindex.htmlの中にベースタグを追加して、trueに@locationProvider HTMLモードを設定する必要があります。

angular.module('myApp').config(function ($routeProvider, $locationProvider) { 
    $locationProvider.html5Mode(true); //activate HTML5 Mode 
}); 

最後#すなわち(#1ページ1)だろうそのセクションを横切るようにidを設定するときにそこにあります

+0

問題は、href = "/ logout"はリダイレクトせず、履歴APIを使用してURLを変更することです。 – jcubic

+0

通常のulrlを動作させるには、 'ng-click =" $ event.stopPropagation() "'を追加する必要があります。 – jcubic

関連する問題