2014-05-20 43 views
0

我的腳本是:ngRoute不工作

的index.html

<!DOCTYPE html> 
<html ng-app="myApp"> 
<head> 
    <title>My Application</title> 
</head> 
<body> 
    <div ng-view></div> 

    <script src="/assets/vendor/angular/angular-1.2.16.min.js"></script> 
    <script src="/assets/vendor/angular/extras/angular-route.js"></script> 
    <script src="/assets/myapp/myApp.js"></script> 
</body> 
</html> 

myApp.js

(function() { 
    angular.module('myApp', ['ngRoute']) 
      .config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) { 
       $routeProvider. 
       when('/', { 
        template: '<h1>Home</h1>', 
        controller: function() { 
         console.log('Home'); 
        } 
       }). 
       when('/books', { 
        template: '<h1>Books</h1>', 
        controller: function() { 
         console.log('Books'); 
        } 
       }); 
       $locationProvider.html5Mode(true); 
       console.log('routes configured'); 
      }]); 
})(); 

我已經浪費了很多時間試圖找出沒有運氣,問題可能是什麼。我錯過了一些愚蠢的東西嗎?先謝謝您的幫助。

+0

確保在控制檯中沒有錯誤,並檢查是否所有JS文件都已加載。或者創建小提琴。 –

+0

這就是驅使我堅果的原因,所有文件都被加載,並且在控制檯中絕對沒有錯誤。 – snajahi

+0

看起來很完美。爲它創建小提琴。 –

回答

0

只是一個問題,但可以在控制器中添加一個函數 - > controller:function()?因爲通常我會這樣做。控制器:'mainController'並將該函數放在mainController中。

1

您是否將您的應用程序託管在服務器的根目錄下?如果沒有,那麼你需要在頭標籤中使用下面的標籤。

<base href="PATH_HERE" /> 

另外,你能註釋掉$ locationProvider.html5Mode(真)線和讓你的應用程序中的散列路由模式下工作的第一?

+0

請多說。我在一個web應用程序中遇到了這個問題,它的服務器在nginx下被反向代理。 nginx不知道應用程序路由的位置與後端Web服務器的業務相同。這應該工作嗎? –

+0

僅當您將角度應用程序託管在Web服務器根目錄以外的某個位置時才使用基本標記。例如(我假設html5Mode已關閉),如果您有服務器http://myserver.com,並且您的角度應用程序託管在根目錄中,那麼您的角度路徑將在http://myserver.com/中定義#/ someroute。但是,如果您在http://myserver.com/subdirectory/託管您的角度應用程序,那麼您必須將基本標記的href設置爲/子目錄/,以便您的路徑正確解析爲http://myserver.com /子目錄/#/ someroute – romiem