2013-04-16 36 views
3

angular如何知道爲包含'ng-view'元素的模板視圖發出請求?Angular Routing&ng-view

如果我在我的應用程序導航直接說

http://localhost/Categories/List/accessories 

。仍然會對'/或索引模板'發出請求,因爲它包含呈現所有視圖所需的'ng-view'元素。

當我從索引導航到/ Categories/List/accessories時,再次請求索引。

下面是我已在部分複製從角MVC「菜譜」的例子在GitHub上

angular.module('myApp', ['myApp.ctrl.list']) 
    .config(['$routeProvider', '$locationProvider', function ($routeProvider) { 
     $routeProvider.when('/', { 
      templateUrl: '/Home/Splash', 
     }); 
     $routeProvider.when('/Categories/List/:slug', { 
      templateUrl: '/Categories/List', 
      controller: 'listCtrl', 
     }); 
     $routeProvider.otherwise({ 
      redirectTo: '/' 
     }); 
    }]); 
+0

templateUrl通常會包含路徑.html文件。它是否缺少擴展名? – Ketan

回答

3

有了您的路由配置基本的路由,我相信你的榜樣網址缺少英鎊符號(#) ,所以它應該是這樣的:

http://localhost/#/Categories/List/accessories 

#符號後面的部分是旨在通過AngularJS要解決的路徑(即您所定義的路由配置。)

當您在瀏覽器的地址欄中輸入上述URL時,瀏覽器會自動在localhost上查找index.html。大多數瀏覽器(如果不是全部)都設置爲只在URL中存在域名時查找index.html。

#號之後的部分怎麼樣?你可能會問。根據定義,#號之後的路徑不會發送到服務器,因此瀏覽器可能不太關心該部分包含的內容。

在您提到的第二種情況下,AngularJS不請求index.html,因爲它在第一次加載時被緩存並且使用了緩存副本。