3

角度如何知道对包含“ng-view”元素的模板视图提出请求?

如果我在我的应用程序中导航直接说

http://localhost/Categories/List/accessories

. 仍然向“/或索引模板”发出请求,因为它包含渲染所有视图所需的“ng-view”元素。

当我从索引导航到 /Categories/List/accessories 时,不再请求索引。

下面是我的基本路由,部分复制自 GitHub 上的 Angular MVC “CookBook”示例

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: '/'
        });
    }]);
4

2 回答 2

3

通过您的路由配置,我相信您的示例 url 缺少井号 (#),因此它应该如下所示:

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

# 号后面的部分是 AngularJS 打算解析的路径(即你定义的路由配置)

当您在浏览器的地址栏输入上述网址时,浏览器会自动查找index.html. localhost当 URL 中仅存在域名时,大多数浏览器(如果不是全部)都设置为查找 index.html。

# 号后面的部分呢?你可能会问。根据定义,# 符号之后的路径不会发送到服务器,因此浏览器可能不太关心该部分是由什么组成的。

在您提到的第二种情况中,AngularJS 不会请求,index.html因为它在第一次加载时已被缓存并且使用了缓存的副本。

于 2013-04-16T15:42:53.137 回答
0

您的 locationProvider 是否为 HTML5 配置?

$locationProvider.html5Mode(true);

请参阅在 angular.js 上使用 HTML5 pushstate

于 2014-02-01T19:06:16.200 回答