【问题标题】:How to publish a config into parent component when the child component has ViewModel in extjs当子组件在extjs中有ViewModel时如何将配置发布到父组件
【发布时间】:2015-04-02 18:47:21
【问题描述】:

我有一个 extjs 类,它有一个 config 字段,现在我想发布它对父容器的更改。

当我在子组件中没有 viewModel 时没关系,但是每当我向子类添加 viewModel 时它就会中断!这是因为出版。它将数据发布到最近的 ViewModel!

我怎样才能做到这一点? 检查小提琴:https://fiddle.sencha.com/#fiddle/hj2 在小提琴中,如果您取消注释注释行,您将看到更改字段不会发布到窗口标题中。

【问题讨论】:

  • 由于您在其中有父容器和子项,因此最好定义模型并创建一对一的引用。但是,我不是 100% 的样子。
  • 我没有通过一对一的引用来理解你的观点。顺便说一句,我的子组件本身可能有一个视图模型,我无法将它移动到其他地方(因为它使用了一些公式)
  • 如文档中所述,publishes 值必须声明为类的对象。
  • 这是配置系统正确合并派生类的值所必需的

标签: extjs mvvm bind


【解决方案1】:

从这里尝试Bindable 覆盖

https://github.com/alexeysolonets/extjs-mvvm-extensions

为了您的问题,它是正确的。

【讨论】:

    【解决方案2】:

    不幸的是,我找不到完美的方法。我找到的唯一解决方案是: 1-获取孩子的 ViewModel 2- 在孩子的虚拟机上调用 bind 函数以获取更改并将值放入所需的位置:

    vm.bind('{a.c}',function(v){w.setTitle(v)});

    检查这个小提琴:https://fiddle.sencha.com/#fiddle/hrp

    【讨论】:

      【解决方案3】:

      viewModel 默认为:{$value: null, lazy: true},传递“{}”配置可能是问题

      viewModel:{$value: null}, //works
      

      【讨论】:

      • 谢谢,但在所有情况下都无济于事。如果我将 $value(这是一个私有字段!)设置为 null,它会导致 viewModel 为 null。
      猜你喜欢
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 2020-06-18
      • 1970-01-01
      • 2021-08-24
      • 2017-07-25
      • 2019-04-11
      • 1970-01-01
      相关资源
      最近更新 更多