2017-09-06 72 views
2

所以我是Angular的新手,並試圖弄清楚多個路由如何導致相同的視圖/ templateUrl和控制器。這是我寫的東西:

angular 
    .module('mwsApp', [ 
    'ngAnimate', 
    'ngCookies', 
    'ngResource', 
    'ngRoute', 
    'ngSanitize', 
    'ngTouch', 
    'ui.bootstrap' 
    ]) 
    .config(function ($routeProvider, $locationProvider) { 
    // debugger 
    $routeProvider 
     .when('/', { 
     templateUrl: 'index.html', 
     controller: 'MainCtrl as vm', 
     }) 
     .when('/rika', { 
     templateUrl: 'index.html', 
     controller: 'MainCtrl as vm', 
     }) 
     // .otherwise({ 
     // redirectTo: '/' 
     // }); 

     $locationProvider.html5Mode(true).hashPrefix("!"); 
    }); 

問題:目前,如果我去爲「localhost:9000 /」它讓我看到了正確的版本,但如果我去爲「localhost:9000 /梨花」它給我「無法得到/ rika」。

調試:我已經將問題縮小到html5Mode。我試圖擺脫#! Angular會自動添加到URL上,但是當我這樣做時,會彈出錯誤消息。

欣賞任何人的輸入!

+0

你不能擺脫的地址散列,這與使用Angular(也AJAX'ing)等路由失敗的目的... –

+0

是的,你可以,我沒有擺弄它個人,但它可能 – user7951676

+1

看看[這個SO](https://stackoverflow.com/questions/28629774/how-to-remove-the-hash- from-the-angularjs-ng-route) – Jax

回答

1

你不能在local development擺脫#,所以你需要註釋此行

$locationProvider.html5Mode(true).hashPrefix("!"); 

但是,當你在一些server on production然後uncomment,並用它,否則刪除#

你」將不會得到錯誤reloads in local development

+0

這仍然不能生產,site.com/rika仍然會導致問題 –

+0

在您的html中添加基準標記,只是這樣做不會幫助,您需要做一些設置在你的服務器上,根據你使用什麼像nginx,s3等 – Rakeschand

+0

^聽起來過於複雜的刪除一個簡單的#大聲笑... –