【问题标题】:Hidden router view breaks databinding - Aurelia隐藏的路由器视图破坏了数据绑定 - Aurelia
【发布时间】:2015-12-11 23:44:20
【问题描述】:

我想有条件地显示一个登录页面,但遇到了问题。我用官方aurelia skeleton application 复制了它,将app.html 更改为以下内容:

<template>
  <require from="nav-bar.html"></require>
  <require from="bootstrap/css/bootstrap.css"></require>

  <nav-bar router.bind="router"></nav-bar>

  <template if.bind="false">
    <div class="page-host">
      <router-view></router-view>
    </div>
  </template>
  <h1 if.bind="true">Not logged in, show login page</h1>
</template>

问题是路由器对象不再被定义,因此导航栏不起作用(没有显示导航项)。有人知道我在这里做错了什么吗?

【问题讨论】:

  • 很难知道那里发生了什么。您应该提供有关您的应用正在做什么的更多信息。查看aurelia.io/docs.html#/aurelia/framework/1.0.0-beta.1.0.3/doc/… 的 Aurelia Docs 并搜索“自定义导航管道”。相信对你有帮助
  • 你是对的。我现在澄清说我正在使用官方的 aurelia 骨架应用程序,上面是我为重现该问题所做的更改。我不想使用导航管道,因为我的想法是在没有重定向的情况下处理登录(这本身可能有缺陷(?)但应该可以工作)。
  • 它在这里尝试了你的代码,它工作正常......也许还有另一件事正在破坏你的应用程序。提供完整的 app.js 代码,包括当前路由的 .js
  • 我使用了上面链接的官方骨架,所以代码和那个没有什么不同。你可以再试一次,因为我更新了代码,我看到的问题是没有显示导航项。
  • @SimonBengtsson 使用setRoot

标签: javascript web-component aurelia


【解决方案1】:

似乎如果您删除&lt;router-view&gt;router 将不起作用。您应该使用不同的方法来处理登录。

查看http://aurelia.io/docs.html#/aurelia/framework/1.0.0-beta.1.0.3/doc/article/cheat-sheet 的 Aurelia Docs 并搜索“自定义导航管道”。 相信对你有帮助

编辑

根据 Jeremy Danyow 的评论,setRoot(module) 函数将是一个更简单的解决方案。更多信息https://stackoverflow.com/a/33458652/725866

【讨论】:

  • 我最终使用了上面链接的自定义导航管道。但是,我从一开始的目标就是避免使用登录路径,因为我认为这没有意义并且会使编码复杂化。我失败了,几乎放弃了。
  • setRoot 比插入导航管道更容易
  • @JeremyDanyow 这是真的!感谢您的评论。我会用你的链接更新答案,以帮助未来的人!
  • @JeremyDanyow 这确实是我一直在寻找的,并且在那个问题中得到了更好的表达!
猜你喜欢
  • 1970-01-01
  • 2014-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-08
  • 1970-01-01
  • 1970-01-01
  • 2017-02-24
相关资源
最近更新 更多