【发布时间】:2017-08-12 13:35:18
【问题描述】:
我们使用 AngularJS 版本 1.3.16 和 nodeJS 作为后端,ng-route 用于角度路由。工作代码由 #!作为节点和角度的 URL 分隔符。
示例网址: /store/1234/#!/部门/生产 /store/1234/#!/department/produce/category/fruits
NodeJS 路由代码:
app.get('/store/:storeid', ctrl.storeView);
角度路由代码:
$routeProvider.when('/department/:deptIndex', {
controller: 'CartController',
resolve: {
// I will cause a 1 second delay
delay: function ($q, $timeout) {
var delay = $q.defer();
$timeout(delay.resolve, 1000);
return delay.promise;
}
}
}).when('/department/:deptIndex/category/:catIndex', {
controller: 'CartController',
resolve: {
// I will cause a 1 second delay
delay: function ($q, $timeout) {
var delay = $q.defer();
$timeout(delay.resolve, 1000);
return delay.promise;
}
}
});
$locationProvider.html5Mode(false).hashPrefix('!');
为了使 URL 对 SEO 友好且可抓取,我们必须从 URL 中删除 hashbang。 因此,当我们尝试启用 html5 模式时,就会出现问题。启用该模式后,角度路由不起作用。
【问题讨论】:
-
您能否详细说明“不工作”的含义?是否抛出错误?屏幕是空白的吗?有什么路线有效吗?
-
您的代码适用于 $locationProvider.html5Mode(false) ??
-
@BOSS 是的,我的代码禁用了 html5mode。
-
@AJFunk “不工作”在我的意义上意味着 url 得到更新但部分未显示。我可以看到我的角度路线没有得到匹配。它总是在 ng-route 中以其他方式进行
-
你用的是什么网址??没有 html 5 和 html 5
标签: angularjs node.js routing ngroute html5mode