Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
zk表单重置在MVVM中不起作用_Mvvm_Zk - Fatal编程技术网

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

zk表单重置在MVVM中不起作用,mvvm,zk,Mvvm,Zk,我试图在zk中使用MVVM模型。 如果我在zk中使用form并尝试重置该值,它将不具有约束力 <?page title="" contentType="text/html;charset=UTF-8"?> <zk> <window border="none" apply="org.zkoss.bind.BindComposer" viewModel="@id('ix') @init('com.Controller')

我试图在zk中使用MVVM模型。 如果我在zk中使用form并尝试重置该值,它将不具有约束力

 <?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);
}

@命令
@通知更改(“标题”)
公共无效反向(){
字符串值=(字符串)fx.getField(字段名);
String newValue=新的StringBuilder(value).reverse().toString();
setTitle(newValue);
}
但是,如果我直接使用
而不使用表单,它会起作用。
我可以知道这个代码出了什么问题吗。

我会告诉你出了什么问题

<button onClick="@command('reverse', fx=fx, field='title')" label="Reverse"/>
这里有您的命令方法,但没有您期望的参数。 由于Title可能是一个全局私有字符串,因此也不需要为其指定参数。 如果要提供参数,则应使用以下代码:

@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的功能非常强大,它可以在不调用save方法的情况下更改DB中的值
@bind(ix.title)实际上与@load(ix.title)@save(ix.title)相同,但分组在一个单词中以备代码使用

希望这对你有帮助

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