Aurelia:子路由器路由显示在 app.html 元素中的“主”导航栏和子视图中?

2024-01-22

我们想要一个侧边栏菜单和一个“主”区域。根据您的导航方式,侧边栏的菜单项将发生变化,并且新视图将加载到“主”区域。

我创建了 app.html<router-view>元素,以及一个可以显示主路由器导航的 nav-bar.html。假设我最初将“管理”和“报告”作为路由(以及菜单项)。当用户单击“管理”时,我希望更新菜单以显示子路由(例如“用户”和“设置”),并在 app.html 中显示管理视图模型<router-view>.

最初我尝试创建一个子路由器,但后来我必须有一个新的<router-view>admin.html 内部(如果没有这个,页面甚至无法加载)。相反,我希望 admin.html 视图显示在<router-view>app.html 的,并让子路由替换导航栏菜单中的“主”路由。

在 app.js 中,我有以下路由器配置:

this.router.configure((config) => {
    config.title = "Welcome";
    config.map([
        { route: "", moduleId: "welcom", nav: false, title: "Welcome" },
        { route: "reports", moduleId: "reports", nav: true, title: "Reports" },
        { route: "admin", moduleId: "users", nav: true, title: "Administration" },
    ]);
});

在 users.js 中,我有以下代码:

this.router.configure((config) => {
    config.title = "Users";
    config.map([
        { route: "", moduleId: "users", nav: true, title: "Users" },
        { route: "settings", moduleId: "settings", nav: true, title: "Settings" },
    ]);
});

最初,菜单应该是:
- 行政
- 报告

和“welcome.html”应该是视图<router-view>(默认路由是“欢迎”)。

当用户单击(导航到)“管理”时,菜单应刷新为:
- 用户 - 设置

与“users.html”中<router-view>.

然而,为了让它发挥作用,我需要进一步<router-view>在“users.html”中,这并不是我真正想要的(我希望视图加载到 app.html 中<router-view>).

在 Aurelia 有办法实现这一点吗?我什至尝试将父路由器注入管理构造函数(使用Parent.of(router)绑定),然后router.addRoute()。路线已添加,但菜单未更新(即使它是数据绑定的)。


我使用 Aurelia 创建了一个示例,它使用左侧菜单实现了分层菜单结构。

这里有关于示例项目的注释 https://github.com/cmichaelgraham/aurelia-typescript/tree/master/multi-level-menu#multi-level-menu

You can 在线运行示例 http://cmichaelgraham.github.io/aurelia-typescript/multi-level-menu/测试一下

多级菜单示例展示了在构建 Aurelia SPA 网站时如何快速创建分层菜单。

多级菜单可帮助用户浏览页面层次结构。

配置路由和层次结构很容易,如下所示:

import aur = require("aurelia-router");
import mlmps = require("./MultiLevelMenuPipelineStep");

export class App {
    static inject = [aur.Router];

    constructor(public router: aur.Router) {
        this.router.configure((config) => {
            config.title = "Aurelia VS/TS";
            config.addPipelineStep("modelbind", mlmps.MultiLevelMenuPipelineStep);
            config.map([
                { route: ["", "home"], moduleId: "views/home", nav: true, title: "home", settings: { level: 0, show: true } },
                { route: ["item-1"], moduleId: "views/item-1", nav: true, title: "item 1", settings: { level: 0, show: true } },
                { route: ["item-1-1"], moduleId: "views/item-1-1", nav: true, title: "item 1.1", settings: { level: 1, show: false } },
                { route: ["item-1-2"], moduleId: "views/item-1-2", nav: true, title: "item 1.2", settings: { level: 1, show: false } },
                { route: ["item-2"], moduleId: "views/item-2", nav: true, title: "item 2", settings: { level: 0, show: true } },
                { route: ["item-2-1"], moduleId: "views/item-2-1", nav: true, title: "item 2.1", settings: { level: 1, show: false } },
                { route: ["item-2-2"], moduleId: "views/item-2-2", nav: true, title: "item 2.2", settings: { level: 1, show: false } },
                { route: ["item-2-2-1"], moduleId: "views/item-2-2-1", nav: true, title: "item 2.2.1", settings: { level: 2, show: false } },
                { route: ["item-2-2-2"], moduleId: "views/item-2-2-2", nav: true, title: "item 2.2.2", settings: { level: 2, show: false } },
                { route: ["item-2-3"], moduleId: "views/item-2-3", nav: true, title: "item 2.3", settings: { level: 1, show: false } }
            ]);
        });
    }
}

The level属性用于建立层次结构。这show属性控制菜单中路线的可见性。路由器导航管道步骤查看目标导航并相应地设置路线可见性。导航助手提供了一个按钮,用于从当前路由向上导航一个级别,并向路由器调用相应的导航命令。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Aurelia:子路由器路由显示在 app.html 元素中的“主”导航栏和子视图中? 的相关文章

  • 可安装发动机安装在什么路径上

    我需要从可安装引擎的布局内部知道它当前安装在什么路径上 该怎么做呢 例如 我的routes rb 包含以下行 mount BackendCore Engine gt backend 从 BackendCore 内部 我需要访问 backen
  • Express js:将多个路由文件合并为单个文件

    在我的express js应用程序中 我按以下方式组织我的路线 paths comment js 处理所有评论路由 var express require express var router express Router var comm
  • 如何在一个解决方案中为两个单独的项目在 asp.net core 中设置路由?

    我创建了两个 asp net core mvc 项目 它们分别工作正常 每一个在其 startup cs 文件中都有自己的路由 当我启动它们时 它们运行良好 我的问题是 如何从第一个项目设置第二个项目路线 我应该在第一个项目中更改哪里 我应
  • 如何将 React Router location prop 传递给组件?

    我试图弄清楚如何将 React Router 的 location 属性传递给组件 我有一个这样定义的路线
  • Aurelia 验证 - 验证失败时不显示任何消息

    我一直在研究 Aurelia Validation 示例 并且有以下内容 索引 html
  • Backbone.js / Marionette.js 中的路由 - 无主题标签、路由列表和子路由器

    我对 Backbone js Marionette js 中的路由有三个问题 1 如何获取我的应用程序路由器已注册的所有路由的列表 例如对于 Express js 在 Node js 中 它将是app routes 我尝试对 Backbon
  • Docker nuget连接超时

    尝试利用官方jetbrains teamcity agentKubernetes 上的图像 我已经设法在 Docker 中运行 Docker 但尝试使用以下命令构建 ASP NET Core 映像docker build命令失败于dotne
  • 将自定义路由添加到 Rails 应用程序

    我已经读过导轨指南 http guides rubyonrails org routing html 我想要设置的是路由到 配置文件 控制器的以下路由 GET profiles charities 应显示所有慈善机构 GET profile
  • Aurelia:创建嵌套/多级导航菜单的简单方法

    我需要创建一个多级导航菜单 菜单的内容根据用户的不同而不同 我计划通过一个以 JSON 形式返回数据的服务来提取可包含子项数组的导航项集合 我见过的每个导航 路由示例都使用静态路由或单级菜单 我已经阅读了一些有关子路由的内容 但这似乎不是我
  • Flutter:go_router如何将多个参数传递到其他屏幕?

    在普通颤动中 我用来将多个参数传递到其他屏幕 如下所示 Navigator of context push MaterialPageRoute builder gt CatalogFilterPage list list bloc bloc
  • Angular子路由和404

    查找不存在链接的路线不允许您浏览子链接 应用程序路由 module ts import NgModule from angular core import Routes RouterModule from angular router im
  • 如何在 Angular i18n 路由器模块中使用 LOCALE_ID

    我正在使用 Angular 的 i18n 设置构建一个小型 Angular 应用程序 除了 url 路径和 slugs 的翻译之外 一切都工作正常 我尝试了一种可能的解决方案 为每种语言提供一个路由模块 如此处所述 但这不起作用 我以为我可
  • 如何找到 Rails 中的当前路线?

    我需要知道 Rails 中过滤器中的当前路线 我怎样才能知道它是什么 我正在处理 REST 资源 但没有看到命名路由 如果您尝试对视图中的某些内容进行特殊处理 您可以使用current page as in 或者一个动作和ID 或命名路线
  • 如何在rails中定义自定义路径?

    我有一个用户模型 如果我做 def my action user User new end then I get undefined method users path for
  • 多态控制器和调用对象

    我的地址具有多态关系 可以由成员或依赖者拥有 一切看起来都很棒 直到我意识到除非我遗漏了一些东西 否则我不知道创建它的对象是什么类型 有没有办法告诉路由文件包含对象的类型 Models class Member lt ActiveRecor
  • 创建包罗万象的路由

    我在网上找到了几个在 ASP NET MVC 中创建包罗万象的路由的示例 尤其是在 StackOverflow 上 但这似乎在 MVC4 中对我不起作用 public static void RegisterRoutes RouteColl
  • Laravel 5.2 带有可变参数的命名路由用法

    我有这样的路线 Open New Subscription page Route get account subscriptions create menu uses gt Subscriptions SubscriptionControl
  • 无法实例化模块 [$injector:unpr] 未知提供程序:$routeProvider

    我从 AngularJS 升级时收到此错误1 0 7 to 1 2 0rc1 ngRoute 模块不再是核心的一部分angular js文件 如果您继续使用 routeProvider 那么您现在需要包括angular route js在你
  • Angular 2 获取当前路线

    所以我需要以某种方式检查我是否在主页上执行某些操作 而在其他页面上则不执行此操作 该组件也在所有页面上导入 如果我在主页上 如何检测该组件 Thanks 尝试这个 import Router from angular router expo
  • 相对于路径匹配路由

    我想要任何以以下结尾的网址 templates filename 使用路由属性映射到特定控制器 例如 public class TemplateController Controller Route templates templateFi

随机推荐