aurelia - 当父值通过 DI 从子值更改时刷新父 View 中的绑定(bind)

标签 aurelia

目标是能够在 SharedParent 和/或 SharedState View 中更新“标题”,只要它通过 DI 从子级更改。

我怀疑 layout-view 有问题和 layout-view-model在 Aurelia 路由器自定义元素上。

我需要这个,因为真实代码中的 SharedParent 将抽象通用计算函数(保存在 SharedParent 中的变量中,当前未在 View 中更新)等 children 将调用(以避免每个 child 重复这个功能)。理想情况下引用 SharedParent 的 DI 引用。

理想的解决方案可以直接修改父代。 SharedState 只是一种额外的测试方式,可以忽略,如果你能看到一种让它与选项 1 一起工作的方法)

选项 1 开始工作是我的首要任务

在此处查看实时运行要点:https://gist.run/?id=66eeff540a4665694a31482b790bf01e

更新

我已经提出了另一个要点,以展示我尝试过的另一种方式,以使父/子关系正常工作:https://gist.run/?id=080d4ac3f4d8677d344140a7827aea94 - 在此示例中,由于路由器中重复的“路由”属性,当前路由未正确设置只是另一个问题。但是在这里,至少我们能够从子级更新父级属性。理想的解决方案是让两者都在一个解决方案中工作。以便正确设置事件路由,并且子级将能够更新依赖注入(inject)父级的属性。最后,父 View 需要刷新此更改。顺便说一句,这个要点来自另一个问题:How to dynamically build navigation menu from routes linking to parent/child views/controllers - 但稍作修改以帮助说明在这个问题的要点中不起作用的东西确实在这里起作用。

把它们加起来。

我首先尝试以这种方式解决我的问题:https://gist.run/?id=080d4ac3f4d8677d344140a7827aea94 - 几乎所有东西都按原样工作(从 subview 中设置父级标题)并在 subview 中反射(reflect)父级的日期/语言更改 - 从子级获取和设置父级属性。唯一不起作用的是路由。我无法显示事件路线,因为多条路线共享相同的“路线”属性。

所以我查看了 layout-view(-model) 解决方案(我在这个问题中提出了这个方案)——这似乎解决了路由问题,但打破了父/子之间的绑定(bind)。

最佳答案

我让它在这里工作:
https://gist.run/?id=6c112829bb42a5ed86b78b4c8917a72c

  • 我设置@singleton(true) SharedParent 上的装饰师=> DI Basics
  • 我使用了来自注入(inject)的 Parent
  • 的现有 BindingSignaler

    关于aurelia - 当父值通过 DI 从子值更改时刷新父 View 中的绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42856797/

    相关文章:

    router - 如何获取当前路由器配置 Aurelia 的标题

    javascript - Aurelia 中第三方库的依赖注入(inject) (di) 范例

    javascript - 使像 lodash 这样的库在 Aurelia 中全局可用的最佳实践是什么?

    aurelia - View 模型是单例吗?或不?

    javascript - 数据在一页上的多个 Aurelia 应用程序之间移动

    javascript - 父模板 View 模型中子模板和对象属性之间的双向绑定(bind)?

    testing - 检测通过模板生成的文本框的问题

    javascript - 将 'scripts' 文件夹添加到 Aurelia 项目中的 .gitignore?

    download - 获取 API 以强制下载文件

    javascript - '港口' aurelia-skeleton-navigation to typescript