【发布时间】:2013-11-26 23:12:19
【问题描述】:
我认为我对 Angular 在单页应用程序中截取我的路由的方式存在根本性的误解。
我认为,我的问题很简单。当我输入网址时:
localhost:3000/streams/
我想加载“流”页面。我认为它的工作方式如下:
-
我的快递服务器接收到请求,并用布局回答。
app.get('/streams/',function(req,res){ res.render('layout'); }) - 我的布局页面已呈现。它调用客户端 app.js 并具有 ng-view。
-
Angular 拦截“/streams/”路径,然后调用“streams”模板。像这样:
$routeProvider .when('/', { templateUrl: '/templates/mainpage' } ) .when('/streams/', { templateUrl: '/templates/streams' } )
出于某种原因,现实情况大不相同。
当我加载'/streams' 时,角度检索/templates/streams,并且
当我加载 '/streams/ 时,角度检索 /templates/mainpage。
为什么?
这种误解已经困扰我好几天了......
任何帮助都将获得 5 个量子能量的奖励。
谢谢。
【问题讨论】:
-
这是因为 /streams/ 与您定义的任何路由都不匹配,并且您没有默认设置。它可能只是抓住了第一个 .when() 定义的 /templates/mainpage。
-
谢谢。我不明白的是,@ZackArgyle 是 /streams/ 与我定义的路线不匹配的原因。第二个 .when() 语句没有处理它吗?
-
是的,这是 Angular 的“特征”。看看这个问题Stack Overflow
-
我想我明白了。所以基本上我最好的选择是尝试在我的 .when() 语句中使用 $http 调用,而不是依赖 Angular 的 $resource?
-
看起来你应该尝试像这样转义最后一个它,'/streams\\/',或者像这样'/streams/'在末尾添加一个空格。我还没有尝试过,但在诉诸 $http 之前值得一试
标签: javascript angularjs express single-page-application