Events ZK-EventQueue正在工作,但数据未刷新

Events ZK-EventQueue正在工作,但数据未刷新,events,data-binding,zk,Events,Data Binding,Zk,好吧,我已经在这上面花了太多时间了,但这真的让我很烦!所以,我有一个页面,上面有一堆标签。为了便于管理,我想将这些选项卡中的每一个都转换为自己的.zul页面,并带有自己的ViewModel。我实现了一个EventQueue,以便将主对象(锦标赛对象)从主页传递到所有sup页面 问题是,每当触发事件并更新锦标赛对象时,页面将不会刷新其数据,即使它在ViewModel中已更改。我尝试添加@NotifyChange注释,但没有成功。在调试过程中,我消除了额外的.zul。请参阅下面的代码 tournam

好吧,我已经在这上面花了太多时间了,但这真的让我很烦!所以,我有一个页面,上面有一堆标签。为了便于管理,我想将这些选项卡中的每一个都转换为自己的.zul页面,并带有自己的ViewModel。我实现了一个
EventQueue
,以便将主对象(锦标赛对象)从主页传递到所有sup页面

问题是,每当触发事件并更新锦标赛对象时,页面将不会刷新其数据,即使它在ViewModel中已更改。我尝试添加
@NotifyChange
注释,但没有成功。在调试过程中,我消除了额外的.zul。请参阅下面的代码

tournamentsTab.zul:

<tabpanel apply="org.zkoss.bind.BindComposer" viewModel="@id('bcvm') @init('com.cannon.tnt.trm.mvvm.BeltClassViewModel')">
  <vlayout vflex="1">
    <grid model="@load(bcvm.tournament.beltClasses)" emptyMessage="No belt ranks created yet." vflex="1">
        <columns>
          <column label="Name" align="center" width="200px"/>
          <column label="Description" align="center"/>
          <column label="Delete" align="center" width="120px"/>
        </columns>
        <template name="model">
           <row>
             <textbox value="@bind(each.name)" width="95%"  onChanging="@command('setStateEditing')"/>
             <textbox value="@bind(each.description)" width="95%"
                                         onChanging="@command('setStateEditing')"/>
             <button label="Delete" onClick=""/>
           </row>
         </template>
     </grid>
  </vlayout>
  <!--<include src="beltClassPanel.zul"/>-->
</tabpanel>
正如我提到的,
EventQueue
部分工作得非常好。事件被激发,然后由调用在视图模型上设置锦标赛对象的侦听器接收。问题是,UI中未更新引用的锦标赛对象。我已经在getTournament()调用中设置了一个断点,并验证了唯一被调用的时间是页面首次加载时


请帮忙我知道通常这些事情都是我忽略的愚蠢的事情。请证明我的白痴!:)

我想您需要手动发布通知,您可以尝试以下方法:

public void onEvent(Event event) throws Exception {
    setTournament((Tournament) event.getData());
    BindUtils.postNotifyChange(null, null, BeltClassViewModel.this, "tournament");
}

尤金发现了问题。一个简单的错误。我有
@NotifyChange({touring}”)
,而它本应该是
@NotifyChange({“touring})
。谢谢,尤金和堆栈溢出

来吧!你帮助别人!;)@NotifyChange语法似乎是错误的。它应该像
@NotifyChange(“锦标赛”)
@NotifyChange({“锦标赛”})
看……我告诉过你这是件愚蠢的事!!!谢谢你,尤金!堆垛溢流岩石。:)
public void onEvent(Event event) throws Exception {
    setTournament((Tournament) event.getData());
    BindUtils.postNotifyChange(null, null, BeltClassViewModel.this, "tournament");
}