2016-04-27 118 views
0

我的角度路由功能不起作用 - 有一個頁面加載,但沒有'home.html'文件。這是我的代碼:AngularJS路由功能不起作用

的Index.html

<html ng-app="App" class="no-js" lang="en" > 
<head> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-route.min.js"></script> 
    <script src="app.js"></script>  
    </head> 

    <body ng-cloak> 
    <div ng-controller="main"> 
     <div ng-view></div> 
    </div> 
    </body> 
</html> 

app.js

(function() { 
'use strict'; 

angular 
    .module('App', ['ngRoute']) 
    .controller('$routeProvider', router) 
    .controller('main', main); 

function router($routeProvider) { 

    $routeProvider. 
      when('/', { 
      templateUrl: '_pages/home.html', 
      controller: 'main' 
      }); 

}; 
function main ($scope) { 
console.log("done"); 
} 
+0

您確定目錄結構是否正確?編輯:這個節點文件與_pages文件夾在同一個目錄下嗎? – Olly

+0

目錄應該沒問題 - home.html位於子文件夾(上面的文件:index.html是一個文件夾級別) –

+2

路由器的東西應該在'.config'調用中,您可以在控制器中使用它 – reptilicus

回答

3

角度$提供程序只工作在配置狀態。 例如:

angular 
.module('App', ['ngRoute']) 
.config(['$routeProvider', router]); 
function router($routeProvider) { 

    $routeProvider. 
     when('/', { 
     templateUrl: '_pages/home.html', 
     controller: 'main' 
     }); 

}; 
+0

非常感謝 - 這是與$ routeprovider周圍的[]一起工作... –

+0

不客氣。 –

3

路由配置在配置完成的,而不是控制器。更改您的代碼,如下所示:

(function() { 
    'use strict'; 

    angular 
    .module('App', ['ngRoute']) 
    .config(router) 
    .controller('main', main); 

    function router($routeProvider) { 

    $routeProvider. 
     when('/', { 
     templateUrl: '_pages/home.html', 
     controller: 'main' 
     }); 

    }; 

    function main ($scope) { 
    console.log("done"); 
    } 
}); 
+0

哎呀。我們在同一時間回答。您的解決方案非常棒。 :) –

+0

它沒問題。你的解決方案也能工作:) –