2017-08-14 18 views
0

我想2天設定在我的第一個單頁的應用程序的路線,我不知道什麼是與application.When發生我點擊任何鏈接的,好比說我點擊登錄鏈接,然後http://localhost:3000/#!/#%2Flogin這是在請求的URL得到什麼,當我做了一些實驗,看看後來我發現,http://localhost:3000/#!/login顯示我的登錄模板。如何糾正它。 我的代碼 的Html >>#%是角路由獲取添加2F和不工作的角度1.6.4

<a href="/#/">Posts</a> 
<a class="nav-item nav-link" href="/#/register">Register</a> 
<a class="nav-item nav-link" href="/#/login">Login</a> 

route.js >>

angular.module('app') 
.config(function ($routeProvider) { 
$routeProvider 
.when('/',{controller:'PostsCtrl',templateUrl:'posts.html'}) 
.when('/register',{controller:'RegisterCtrl',templateUrl:'register.html'}) 
.when('/login',{controller:'LoginCtrl',templateUrl:'login.html'}) 
}); 
+0

加上'!'在href –

+0

你能在你的HTML''Posts' 'Register' 描述Login' – setCodesToFire

+0

我加'!' –

回答

0

首先,你完全可以通過啓用HTML5模式中刪除的哈希。添加到您的配置:

$locationProvider.html5Mode({ 
    enabled: true, 
    requireBase: false 
}); 

此信息可能幫助:How to remove the hash # from the angularjs ng-route

其次,你不需要當你鏈接到另一個模板引用哈希值。我通常使用這個簡單的go功能在我的角度應用程序中重定向頁面。然後通過調用go('./ template_name')來調用您想要加載的模板。此外,您應該使用ng-click代替href。

vm.go = function(_path) { 
    $location.path(_path); 
} 
+0

,它不能解決'!'問題,你可以通過另一種方式來處理路由。沒有解決問題。 –

+0

@JesusCarrasco啓用html5模式將刪除#和!。 http:// localhost:3000 /#!/ login會變成http:// localhost:3000/login –

+0

那是正確的,但他問爲什麼出現'!'和誰解決!沒有改變他的href。你建議如果他想使用基準,參考它是正確的。我只是說它沒有解決!他有問題。 –

0

在你的配置這樣做是爲了避免!

angular.module('app') 
.config(function ($routeProvider, $locationProvider) { 
    $locationProvider.hashPrefix(''); 

    $routeProvider 
    .when('/',{controller:'PostsCtrl',templateUrl:'posts.html'}) 
    .when('/register',{controller:'RegisterCtrl',templateUrl:'register.html'}) 
    .when('/login',{controller:'LoginCtrl',templateUrl:'login.html'}) 
}); 

而在HTML保持像你面前。沒有!

+0

我看到的代碼再次破...... – setCodesToFire

+0

你是什麼意思密碼破譯。 ??? –

+0

我想我是不會做的一口開發的代碼,因此它並沒有concatinating我得到這個問題解決了,爲什麼他們的額外代碼力一直工作到現在now.But的問題是增加他們的代碼,做一口給我解析錯誤.. – setCodesToFire