gpt4 book ai didi

mvvm - zk 表单重置在 MVVM 中不起作用

转载 作者:行者123 更新时间:2023-12-03 10:28:44 25 4
gpt4 key购买 nike

我正在尝试在 zk 中使用 MVVM 模型。
如果我在 zk 中使用表单并尝试重置它没有绑定(bind)的值

 <?page title="" contentType="text/html;charset=UTF-8"?>
<zk>
<window border="none" apply="org.zkoss.bind.BindComposer"
viewModel="@id('ix') @init('com.Controller')"
form="@id('fx') @load(ix) @save(ix,before='add')" >
<textbox value="@bind(fx.title)"/>
<button onClick="@command('reverse', fx=fx, field='title')" label="Reverse"/>

</window>
</zk>

@Command
@NotifyChange("title")
public void reverse() {
String value = (String) fx.getField(fieldName);
String newValue = new StringBuilder(value).reverse().toString();
setTitle(newValue);
}

但如果我使用 <textbox value="@bind(ix.title)"/>直接没有形式它可以工作。
我可以知道这段代码有什么问题吗?

最佳答案

我会解释你怎么了。

<button onClick="@command('reverse', fx=fx, field='title')" label="Reverse"/>

在这里,您将调用命令 reverse 并为其提供 2 个参数,fx 和 field。
@Command
@NotifyChange("title")
public void reverse() {

在这里,您有命令方法,但没有您期望的参数。
它也不需要提供参数,因为 Title 可能是一个全局私有(private)字符串。
如果你想提供参数,那么这应该是代码:
@Command
@NotifyChange("title")
public void reverse(@BindingParam("fx") Form fx, @BindingParam("title") String title) {

第二 :
 form="@id('fx') @load(ix) @save(ix,before='add')" >

不需要,你使用 mvvm 所以你用 ix 调用 vm,这对你来说已经过时了。

您在此处所做的事情有时需要用于不由@bind 直接更新但只能通过按下保存按钮来更新的网格或列表。
这是因为@save 非常强大,它会在不调用 save 方法的情况下更改数据库中的值。
@bind(ix.title) 实际上与@load(ix.title) @save(ix.title) 相同,但为了节省代码而归为一个词。

希望这可以帮助你。

关于mvvm - zk 表单重置在 MVVM 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20997083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com