2014-01-12 56 views
0

當我打開網址http://localhost:8000/something時,它將我重定向到login,爲什麼?Angular - 無法對路線作出響應

主模板:

<!DOCTYPE html> 
<html lang="en" ng-app="app"> 
<head> 
    <meta charset="UTF-8"> 
    <meta name="csrf_token" ng-init="csrf_token='<?php echo csrf_token(); ?>'"> 


</head> 
<body> 

    <div ng-view></div> 

    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.7/angular.js"></script> 
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.7/angular-route.js"></script> 
    {{ HTML::script("js/ang/main.js") }} 


</body> 
</html> 

JS:

var app = angular.module('app', ['ngRoute'], function($interpolateProvider) { 
    $interpolateProvider.startSymbol('<%'); 
    $interpolateProvider.endSymbol('%>'); 
}); 


app.config(function($routeProvider) { 
    $routeProvider 
     .when('/something', { 
      templateUrl: 'angular_templates/all-timelines.html', 
      controller: 'timelinesCtrl' 
     }) 
     .otherwise({ 
      redirectTo: '/login' 
     }); 

}); 


app.controller('timelinesCtrl', function($scope, $http) { 

}); 

全timelines.html

<input type="text"> 
+0

你的意思是http:// localhost:8000 /#是什麼? – allenhwkim

+0

@allenhwkim沒有'localhost:8000/something' ..我只是嘗試localhost:8000 /#的東西,它的工作。謝謝。這是否意味着角度只會在標籤之後響應url? –

+0

其實它沒有工作..使用localhost:8000 /#的東西只是顯示了我的主頁.. –

回答

1

角使用哈希路由客戶端路由和服務器端之間的區別路由。正如allenhwkim在上面的評論中所說,$locationProvider.html5Mode(true)將允許您使用Angular進行路由而不使用哈希路由,但這隻適用於現代瀏覽器。儘管如此,您的應用在舊版瀏覽器上不會中斷。他們會回落到散列路線。

例如,對於html5Mode,您應該能夠路由到localhost:8000/something並查看您期望的角度視圖。但在較舊的瀏覽器上,您必須導航至localhost:8000/#/something

請參閱官方開發人員指南中有關Hashbang and HTML5 Mode的部分。