【发布时间】:2014-08-15 19:54:01
【问题描述】:
我正在将项目移植到基于角度的 SPA。它目前是一个更“传统”的 node/locomotivejs 应用程序,它从服务器端提供模板(从来不知道这个的正确术语)。
项目太大而无法一次全部迁移,因此我们一次将其转换为有角度的页面。
我的问题:如果您加载应用程序的角度部分,一切正常。您可以正确地进入角度路线。但是,如果您随后转到非角度路线(应该在服务器端处理),则不会加载任何内容(ng-view 变为空白,而不是加载一个全新的模板)。如果您首先转到服务器端路由或点击刷新,则页面会正确加载。
我的猜测是 angular 正在尝试处理这些路由,我不确定如何让它让服务器重新接管。
app.config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) {
$locationProvider.html5Mode(true);
$routeProvider.when('/something/page1', {
templateUrl: '/page1.html',
controller: 'page1Ctrl'
});
$routeProvider.when('/something/page1/subpage', {
templateUrl: '/subpage.html',
controller: 'subpageCtrl'
});
}]);
这是我的角度路由提供者。没有指定“否则”。服务器端我有类似的东西:
this.match( '/someOtherPage', 'someOtherPage#showstuff');
如果我直接转到 /someOtherPage,它会从服务器端正确加载。如果我转到/something/page1,然后转到/someOtherPage,它似乎没有联系服务器。
【问题讨论】:
-
如何导航到 someOtherPage?是
<a href="/someOtherPage">标签吗? -
$location guide 的“Html 链接重写”部分可能会有所帮助。
-
听起来它可以解决问题,但是我无法让它正常工作(我会再弄一些,但如果有更多的参考资料将不胜感激)
标签: javascript node.js angularjs routes locomotivejs