2016-09-15 72 views
1

假設在ZK 8簡單ZUL ...ZK 8 MVVM綁定Child對象的屬性 - 沒有更改通知?

<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> 

現在我已經得到了在虛擬機一個簡單的COMAND ...

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

不幸的是,這並不在所有的工作。可見性不會改變。由於可見性的初始值正常工作,似乎只有變更通知似乎不起作用。

但是,如果我添加一個委託方法將虛擬機本身...

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

...和使用,在我的ZUL ...

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

...它完美精細。有沒有人知道爲什麼這裏的通知失敗?

回答

1

嗯,看來@NotifyChange不支持這樣子屬性...

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

相反,我們不得不使用這樣的事情...

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

...這不似乎工作。我們不得不希望另一件事物作爲新功能;-)