ARTS Share6 miniUI getData(true,false)获取form表单数据问题

昨天在写报表新增画面的时候,遇到一个问题,首次新增是完全成功的,而且新增后新增画面会自动刷新,将新增的数据显示到画面,然后可以进行修改,然后对数据保存。

流程:

  1. 新增一条数据
  2. 点击保存按钮,数据库insert一条数据
  3. 画面自动刷新,新增数据显示在画面上
  4. 可以对数据进行修改,点击保存

问题:当第二次点击保存的时候,本来应该是对前一次新增的数据进行更新,但是我发现数据库里面多了一条数据,然后开始查找原因

具体步骤:

  1. 后台保存方法打断点,进行DEBUG,发现新增一条数据后,刷新画面,的确是将这条数据的主键值带到画面并且隐藏了
  2. 修改数据,再次点击保存,(本来应该是走修改分支),实际发现因为后台获取到的主键值是null,所以又走了新增分支,因此导致数据库多了一条数据
  3. 问题明确了:前端传值的时候并没有将画面隐藏的主键传过来
  4. 前端debug,在保存的时候使用var data = form.getData(true,false);,发现data中并不存在keyid的属性,所以根本原因就出现在这里
  5. miniUI官网查看了一下API,发现miniform提交方式,是根据mini控件的name来获取keyvalue的,然后我去查看了一下我的隐藏域,发现里面没有写name属性
  6. 最后增加了name属性,发现问题解决了。

总结,在使用miniUIform进行提交数据保存的时候,需要注意以下几点:

  1. 你的表单必须有一个id,然后你才可以如下所示的写代码:
var form = new mini.Form("#" + formId);
form.validate();
if (form.isValid() == false) return;
//提交数据
var data = form.getData(true, false);
  1. form提交获取数据是通过mini控件的name将其封装为一个对象进行提交。

ARTS Share6 miniUI getData(true,false)获取form表单数据问题_第1张图片

你可能感兴趣的:(前端)