如何使用zk MVVM
执行此操作我想保存一个bean 但有条件 如果类型是个人而不是保存到个人,否则进入公司
<textbox value="@save(vm.personal ? vm.masterCifPersonal.cifId : vm.masterCifCompany.cifId)" width="100px" maxlength="10"/>
但是当binder保存到bean时,会出现此异常
设置操作的非法语法
答案 0 :(得分:1)
我的建议是修改你的代码并使用临时的var:
<textbox value="@save(vm.temp)" width="100px" maxlength="10"/>
并将您的setter修改为
void setTemp(Long temp) {
if(personal) {
masterCifPersonal.cifId = temp;
} else {
masterCifCompany.cifId = temp;
}
}
答案 1 :(得分:1)
另一个解决方案可能是:
<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>
<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中。
如果个人不是动态的,您可以使用if
的{{1}}属性,但使用情况为:Textbox
,因为绑定不起作用
像这样,文本框也不会渲染到DOM中。