让我们假设 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/