java - ZK 8 MVVM 子对象的绑定(bind)属性 - 没有更改通知?

标签 java mvvm zk

让我们假设 zk 8 中有一个简单的 zul...

<div width="100%" height="100%" viewModel="@id('vm') @init('com.example.MyVM')">
  <div visible="@load(vm.child.isElementVisible)"/>
  <div visible="@load(not vm.child.isElementVisible)"/>
  <button onClick="@command('doSomething')"/>
</div>

现在我在虚拟机中得到了一个简单的命令...

@Command
@NotifyChanges({"child.elementVisible", "someotherproperty"})
public void doSomething() {
  this.child.setElementVisible( !this.child.isElementVisible() );
}

不幸的是,这根本不起作用。可见度没有变化。由于可见性的初始值工作正常,似乎只有更改通知似乎不起作用。

但是如果我向虚拟机本身添加委托(delegate)方法...

public boolean isElementVisible() {
   return this.child.isElementVisible();
}

...并在我的 zul 中使用它...

  <div visible="@load(vm.isElementVisible)"/>
  <div visible="@load(not vm.isElementVisible)"/>

...它工作得很好。有谁知道为什么这里的通知失败?

最佳答案

啊,@NotifyChange 似乎不支持子属性,例如...

@NotifyChanges({"child.elementVisible", "someotherproperty"})

相反,我们必须使用这样的东西......

BindUtils.postNotifyChange(null, null, child, "elementVisible");

...这似乎确实有效。我们必须希望将另一件事作为新功能;-)

关于java - ZK 8 MVVM 子对象的绑定(bind)属性 - 没有更改通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39511970/

相关文章:

wpf - 什么时候不使用 MVVM?

combobox - ZK 窗口在 ID 空间中不是唯一的

java - ZK:如何拦截/使用父菜单栏中的事件?

java - 在 Synth xml 中设置 JLabel 图标

ios - 如何重构代码以遵循 Swift 中的 MVVM 设计模式?

java - 如何为依赖于同一个 jar 的两个独立项目设置 Maven

wpf - WPF模型- View - View 模型工具包

java - org.springframework.beans.factory.NoSuchBeanDefinitionException : No bean named 'itemAttrService' is defined

java - 为什么这会给我一个无限循环?

java - Java中如何使用字节数组来表示二进制数据?