2016-09-15 6 views
1

Давайте предположим, что простой Зул в гк 8 ...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 в VM ...

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

К сожалению, это не работает вообще , Видимость не меняется. Поскольку начальное значение видимости работает нормально, кажется, что только уведомление об изменении не работает.

Но если добавить метод делегата к самой виртуальной машине ...

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

... и использовать это в моей Зуле ...

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

... это прекрасно работает хорошо. У кого-нибудь есть идея, почему уведомление здесь не удается?

ответ

1

Ах, кажется, что @NotifyChange не поддерживает дочерние свойства, как ...

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

Вместо этого мы должны использовать что-то вроде этого ...

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

... который делает похоже, работают. И мы должны надеяться на другое, как на новую функцию ;-)

1

Попробуйте этот источник http://zkframeworkhint.blogspot.it/2014/05/how-to-notify-single-item-or-record-or.html от великого Субодха Джоши.

Концепция использования в целях:

<textbox value="@bind(mymodel.b)" onChange="@command('changeAnotherTextBox',data = mymodel)"/> 

и ViewModel:

@Command 
    public void changeTextBox(@BindingParam("data") Data data) { 
     data.setB("Hariom=>" + data.getA()); 
     BindUtils.postNotifyChange(null, null, data, "b"); 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^