2017-03-19 3 views
1

anglejsルーティングが初めてです。 ng-viewはデフォルトページHome.htmlを読み込みます。しかし、別のページに行くときは、ビューを変更しません。私は多くのソリューションを見てきましたが、どれもうまくいかないようです。私はASP .NETコアを使用しています。私のHtmlファイルはすべてwwwrootフォルダにあります。 javascriptファイルはサブフォルダにあります。ここに私のhtmlAngular Material Navbarがビューを変更しない

<md-content class="md-padding"> 
    <md-nav-bar md-selected-nav-item="currentNavItem" 
       nav-bar-aria-label="navigation links"> 
     <md-nav-item md-nav-href="#/" name="home">Home</md-nav-item> 
     <md-nav-item md-nav-sref="#/about" name="about">About</md-nav-item> 
     <md-nav-item md-nav-sref="#/contact" name="contact"> 
      Contact 
     </md-nav-item> 

    </md-nav-bar> 
    <div class="ext-content"> 
     External content for `<span>{{currentNavItem}}</span>`. 
    </div> 

    <md-checkbox ng-model="disableInkBar">Disable Ink Bar</md-checkbox> 

</md-content> 

<div ng-view></div>' 

は、ここに私のjavascriptです:

var portfolioApp = angular.module('portfolioApp', ['ngMaterial', 'ngRoute']); 

portfolioApp.config(function ($routeProvider) { 
    $routeProvider.when("/", 
     { 
      templateUrl: "/Home.html", 
      controller: "NavigationController" 
     }) 
     .when("/about", 
     { 
      templateUrl: "/About.html", 
      controller: "NavigationController" 
     }) 
     .when("/contact", 
     { 
      templateUrl: "/Contact.html", 
      controller: "NavigationController" 
     }); 
}); 

答えて

1

あなたはmd-nav-href代わりのmd-nav-srefを使用する必要があります。

なぜ?

の一部としてui-srefディレクティブが使用されています。 ui-sref指令をサポートしていないngRouteモジュールを使用しています。 mdNavSrefためdocumentationから

UI-ルータの状態は、このリンクをクリックしたときにに移行します。 ui-srefと表示します。このリンクをクリックしたときにに移行する

URL:mdNavHrefためdocumentationから

。 ng-href ui-srefとしてレンダリングします。

この2つのうちの後者が必要です。ここで

は実施例である:

(function() { 
 

 
    'use strict'; 
 

 
    angular.module('portfolioApp', ['ngMaterial', 'ngRoute']) 
 

 
})(); 
 

 
(function() { 
 

 
    'use strict'; 
 

 
    angular.module('portfolioApp').config(function($routeProvider, $locationProvider) { 
 

 
    $locationProvider.hashPrefix(''); 
 
    
 
    // or use the HTML5 History API 
 
    // $locationProvider.html5Mode(true); // this will remove the hashbang altogether 
 

 
    $routeProvider.when("/", { 
 
     template: "Homepage {{HomeCtrl.location}}", 
 
     controller: function() {}, 
 
     controllerAs: 'HomeCtrl' 
 
     }) 
 
     .when("/about", { 
 
     template: "About page", 
 
     controller: function() {} 
 
     }) 
 
     .when("/contact", { 
 
     template: "Contact page", 
 
     controller: function() {} 
 
     }); 
 
    }); 
 

 
})();
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/angular_material/1.1.0/angular-material.min.css"> 
 

 
<!-- Angular Material requires Angular.js Libraries --> 
 
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js"></script> 
 
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-animate.min.js"></script> 
 
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-aria.min.js"></script> 
 
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-messages.min.js"></script> 
 

 
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-route.js"></script> 
 

 

 
<!-- Angular Material Library --> 
 
<script src="http://ajax.googleapis.com/ajax/libs/angular_material/1.1.0/angular-material.min.js"></script> 
 

 
<div ng-app="portfolioApp"> 
 

 
    <md-content class="md-padding"> 
 

 
    <md-nav-bar md-selected-nav-item="currentNavItem" nav-bar-aria-label="navigation links"> 
 
     <md-nav-item md-nav-href="#/" name="home">Home</md-nav-item> 
 
     <md-nav-item md-nav-href="#/about" name="about">About</md-nav-item> 
 
     <md-nav-item md-nav-href="#/contact" name="contact"> 
 
     Contact 
 
     </md-nav-item> 
 
    </md-nav-bar> 
 

 
    <br> 
 

 
    <div class="ext-content"> 
 
     <span>Current nav item: {{currentNavItem}}</span> 
 
    </div> 
 

 
    <div ng-view class="md-padding"></div> 
 

 
    </md-content> 
 

 
</div>

+0

私はMD-NAV-HREFを使用するようにリンクを変更しました。私はまだ同じ問題を抱えています。今度は別のページに移動しようとすると、#%2FとURLの最後にhrefの名前が追加されます。 –

+0

@JeremyParris [aa077e8](https://docs.angularjs.org/guide/migration#commit-aa077e8)のため、$ locationハッシュバングURLに使用されるデフォルトのハッシュプレフィックスは空の文字列( ' )からバン( '!')へ。あなたの設定で '$ locationProvider.hashPrefix( '')'を使用してください。 – cnorthfield

+1

ありがとうございました。私はあなたが提案したことをしました。 $ locationProvider.html5Mode(true)を追加する必要がありました。私のapp.configで、私の牧場でポンドサインを取る。それから問題はなくなった。 –

関連する問題