使用 EL-Expression 保存 ZK MVVM 活页夹

ZK MVVM binder save with EL-Expression

如何使用 zk MVVM 做到这一点

我要存一颗豆子 但有条件 如果类型是个人而不是保存到个人,否则到公司

<textbox value="@save(vm.personal ? vm.masterCifPersonal.cifId : vm.masterCifCompany.cifId)" width="100px" maxlength="10"/>

但是当binder存入bean时,出现这个异常

Illegal Syntax for Set Operation

我的建议是修改您的代码并使用临时变量:

<textbox value="@save(vm.temp)" width="100px" maxlength="10"/>

并将您的setter修改为

void setTemp(Long temp) {
    if(personal) {
        masterCifPersonal.cifId = temp;
    } else {
        masterCifCompany.cifId = temp;
    }
}

另一种解决方案可能是:

ZK 8 及更高版本:

<if test="@load(vm.personal)">
    <textbox value="@save(vm.masterCifPersonal.cifId)"/> 
</if>
<if test="@load(not vm.personal)">
    <textbox value="@save(vm.masterCifCompany.cifId)"/> 
</if>

ZK 6.5 更高:

<textbox value="@save(vm.masterCifPersonal.cifId)" visible="="@load(vm.personal)"/>
<textbox value="@save(vm.masterCifCompany.cifId)" visible="="@load(not vm.personal)"/>  

区别:

if 标签将 将另一个标签渲染到 dom 而使用 visible 属性将其渲染到 dom.
如果个人不是动态的,您可以使用 Textboxif 属性,但用法是:if="${vm.personal} 因为绑定不起作用
像这样,文本框也不会呈现到 DOM.