从主导航菜单直接链接到父/子视图/控制器

Dac0d3r

考虑以下示例:

主路由器位于

app.js

  • someparent / childroute1
  • someparent / childroute2
  • 路线3

“ someparent”是“基本控制器和视图”。它在视图,自定义元素和绑定中具有一些可重用的html标记,这些标记将由其所有“子视图和控制器”共享。子视图和控制器将访问它们。

在“ someparent.html”中,除了共享标记外,还有一个<router-view>标签,其中子路径和页面应在其中呈现,但someparent.html中没有导航。

从app.js中的主路由器/路由中,应该可以单击链接并登陆-不在父/基类“ someparent”本身上,而是直接在“ someparent”“基/父视图和控制器的子代上” ”,当您单击从app.js中的路由构建的app.html导航菜单中的链接时(以及可能在someparent.js中的路由将父级路由器注入子级路由器还是其他?),两者都呈现。

因此,基本上我需要实现与基本路由几乎相同的功能-但正如我提到的,我需要将多个这些路由/页面作为父视图/控制器的一部分。数周以来,我一直无法通过谷歌搜索找到任何有关此方面的信息,因此希望这里的某人能够理解我的要求,并知道如何在Aurelia中以正确的方式进行操作?

在此处输入图片说明

杰里米·丹尤

创建一个包含共享状态的类,并在视图模型中对该类进行依赖。您可以使用NewInstance.of解析器来控制何时创建共享状态或重新使用共享状态。

这是一个示例:https : //gist.run?id=4cbf5e9fa71ad4f4041556e4595d3e36

在此处输入图片说明

shared-state.js

export class SharedState {
  fromdate = '';
  todate = '';
  language = 'English';
}

shared-parent.js

import {inject, NewInstance} from 'aurelia-framework';
import {SharedState} from './shared-state';

@inject(NewInstance.of(SharedState)) // <-- this says create a new instance of the SharedState whenever a SharedParent instance is created
export class SharedParent {
  constructor(state) {
    this.state = state;
  }

  configureRouter(config, router){
    config.title = 'Aurelia';
    config.map([
        { route: ['', 'child-a'], moduleId: './child-a', nav: true, title: 'Child A' },
        { route: 'child-b', moduleId: './child-b', nav: true, title: 'Child B' },
    ]);

    this.router = router;
  }
}

注意:如果您使用@inject(SharedState)而不是@inject(NewInstance.of(SharedState))SharedState则所有组件将共享的一个实例我不确定这可能是您要寻找的东西。的目的@inject(NewInstance.of(SharedState))是确保父级及其子级都有自己的SharedState实例。

child-a.js

import {inject} from 'aurelia-framework';
import {SharedState} from './shared-state';

@inject(SharedState)
export class ChildA {
  constructor(state) {
    this.state = state;
  }
}

child-b.js

import {inject} from 'aurelia-framework';
import {SharedState} from './shared-state';

@inject(SharedState)
export class ChildB {
  constructor(state) {
    this.state = state;
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从链接到父/子视图/控制器的路由动态构建导航菜单

将按钮连接到导航视图控制器

将子视图控制器链接到情节提要中的父视图控制器

使用链接到控制器的视图编写HTML

导航控制器推式视图控制器

从导航控制器移回视图控制器?

在视图内创建导航控制器

过渡到导航视图控制器

隐藏视图控制器的导航栏

模态视图中的导航控制器

在视图控制器之间快速导航

在视图控制器之间导航的按钮

如何基于滑出菜单导航到不同的视图控制器

为什么我不能将菜单连接到视图控制器IBAction?

特定主导航链接的导航子菜单未正确显示

在未直接链接的2个视图控制器之间传递数据

通过深层链接打开视图控制器时导航栏消失

如何将故事板链接到视图控制器

标签栏控制器根据用户角色链接到不同的视图-iOS Swift

从导航栏视图控制器导航到选项卡栏视图控制器

如何将两个视图控制器链接到以编程方式创建的表视图?

将表视图控制器链接到表视图文件时未显示单元格

导航控制器:窗口导航控制器中最顶层的视图控制器下方是什么?

如何以编程方式将视图控制器嵌入导航视图控制器

为什么导航视图控制器返回零个视图控制器?

如何在导航视图控制器中关闭整个视图控制器堆栈?

调整导航控制器下的菜单栏

是否应将UIIMageViews直接放在控制器的视图中?

Swift试图将表格视图单元格上的点击事件链接到控制器方法