【问题标题】:Misunderstanding of Single-Page Routing in AngularAngular中单页路由的误区
【发布时间】:2013-11-26 23:12:19
【问题描述】:

我认为我对 Angular 在单页应用程序中截取我的路由的方式存在根本性的误解。

我认为,我的问题很简单。当我输入网址时:

localhost:3000/streams/

我想加载“流”页面。我认为它的工作方式如下:

  1. 我的快递服务器接收到请求,并用布局回答。

    app.get('/streams/',function(req,res){
     res.render('layout');
    })
    
  2. 我的布局页面已呈现。它调用客户端 app.js 并具有 ng-view。
  3. 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


【解决方案1】:

事实证明,真正的问题有点不同。

如前所述,Angular 并不知道我指的是“streams”,当我加载“streams/”时,html 有一个相对的基础。

基本上,这个相对基础让我看起来好像已经找到了一个模板,即“/streams”,现在正在检索另一个模板,即“/”。通过在 html 中添加根基可以简单地解决此问题。

 <base href="/">

应该这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 2019-01-24
    • 2019-03-18
    • 2012-03-10
    相关资源
    最近更新 更多