前提条件:fom表单封装在一个组件里了,在其他的页面引用的这个组件 框架使用了wepy
使用表单组件时 例如在form内使用input 未实时绑定到数据实体中
from内嵌套了input和picker,input绑定了初始的value值,
1修改input的内容
2点击picker并变更picker内容,
3然后页面内有内容是根据wx:if控制显示的,触发了页面渲染,原来的input内容就无效了。
预期是 页面的被wx:if控制的内容显示后,input还是原来的值
bug表现是 input显示值恢复成最初的value绑定值
你想反馈一个 Bug 还是 提一个需求?
如果是 Bug:
* Bug 表现是什么?预期表现是什么?
* 如何复现?
* 提供一个最简复现 Demo
如果是需求:
* 你希望有什么能力?
* 你需要这个能力的场景是 ?

麻烦给个相关的代码片段(https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/minicode.html),我们定位下问题
是的,我也遇到这种问题了,表单组件绑定的js里的变量是单向数据流,只在页面初始化渲染的时候有用,当表单组件的值因为用户输入而改变时,js里的变量没有更新值
上面这位兄弟复制我的代码干啥呢
<template><viewclass="container"><viewclass="zan-panel"><viewclass="weui-form-preview__bd"><viewclass="weui-form-preview__item"><viewclass="weui-form-preview__label"><divclass="dudu_labelStyle">订单处理流程:</div><divclass="dudu_contextStyle"></div></view></view></view><approveHistory:steps.sync="formProps":hasDesc.sync="true":type.sync="vertical"></approveHistory></view><viewclass="zan-panel"><viewclass="weui-form-preview__bd"><viewclass="weui-form-preview__item"><viewclass="weui-form-preview__label"><divclass="dudu_labelStyle">订单业务信息:</div><divclass="dudu_contextStyle"></div></view></view></view></view><orderInfoTemplet:businessInfo.sync="businessInfo"></orderInfoTemplet><!-- 渲染各个批准流程的组件 --><!-- 优惠审核 --><viewwx:if="{{ formKey == 'benefit.form' }}"class="zan-panel"><viewclass="weui-form-preview__bd"><viewclass="weui-form-preview__item"><viewclass="weui-form-preview__label"><divclass="dudu_labelStyle">优惠审核:</div><divclass="dudu_contextStyle"></div></view></view></view><benefitApproveForm:taskId.sync="taskId":con_data.sync="con_data"></benefitApproveForm></view><!-- 商务审核 --><viewwx:if="{{ formKey == 'business.form' }}"class="zan-panel"><viewclass="weui-form-preview__bd"><viewclass="weui-form-preview__item"><viewclass="weui-form-preview__label"><divclass="dudu_labelStyle">商务审核:</div><divclass="dudu_contextStyle"></div></view></view></view><businessApproveForm:taskId.sync="taskId":con_data.sync="con_data"></businessApproveForm></view></view></template><script>import wepy from 'wepy';import util from "../../../utils/util";import wxRequest from "../../../utils/wxRequest";import { CglobalData } from "../../../utils/constant";import Tips from "../../../utils/tip";import DateUtil from '../../../utils/date.js';import OrderState from '../../../utils/OrderState.js';import ApproveHistory from "../../../components/ApproveHistory";import OrderInfoTemplet from "../../../components/OrderInfoTemplet";import BenefitApproveForm from "./form/BenefitApproveForm";import BusinessApproveForm from "./form/BusinessApproveForm";export default class Index extends wepy.page {config = {navigationBarTitleText: '审批详情'}components = {approveHistory: ApproveHistory,orderInfoTemplet: OrderInfoTemplet,benefitApproveForm: BenefitApproveForm,businessApproveForm: BusinessApproveForm,};data = {option: {},businessTypes: [{ value: 1, label: '收款' }, { value: 2, label: '付款' }, { value: 3, label: '回滚' }, { value: 4, label: '退款' }, { value: 5, label: '报销' }, { value: 6, label: '其他' }],benefitTypes: [{ value: 0, label: '销售优惠' }, { value: 1, label: '公司特惠' }, { value: 2, label: '公司优惠活动' }],con_data: {},tellersData: [],finxingsData: [],benefitData: [],customerInfos: [],formProps: [],businessInfo: {},formKey: '',taskId: 0,}computed = {}methods = {}async getInfo(id) {wepy.showLoading({title: "加载中"});// 用一个标志位去处理重复请求的问题let _dd = {};_dd.taskId = this.data.option.id;const res = await wxRequest.ajaxByPromise("GET",CglobalData.REQUEST_URL_PRE_MIS + "/task/getTaskInfo.do",_dd);// console.info('res in approveForm', res.data.data);let con_data = res.data.datathis.con_data = con_data || {};this.formKey = con_data.formKey;this.taskId = con_data.id;// this.tellersData = con_data.tellers || [];// this.finxingsData = con_data.orderFixings || [];// this.benefitData = con_data.orderBenefitAttrs || [];// this.customerInfos = con_data.customerInfos || [];this.con_data.orderPlanAttr_actual = con_data.orderPlanAttr_actual || {};this.con_data.orderPlanAttr = con_data.orderPlanAttr || {};//this.businessInfo = JSON.parse(JSON.stringify(con_data.businessInfo.businessInfo || {}))// 处理状态信息let text = "";if (con_data.state != OrderState.getByKey('ITENTPAY').value && con_data.state <= OrderState.getByKey('REFUSE_PLAN').value && con_data.benefitState == 0) {text = "优惠审核中";} else if (con_data.state != OrderState.getByKey('ITENTPAY').value && con_data.benefitState == 2) {text = "优惠审核不通过";} else {text = OrderState.getByValue(con_data.state).label || '';}this.con_data.stateStr = text;// 处理时间轴信息let formProps = con_data.formProps;for (var i = 0; i <formProps.length; i++) {letele=formProps[i];if (ele.type == 1) {ele.current=false;ele.done=false;ele.text = (ele.typeInfo || '');ele.extraText = (ele.approve || '');ele.desc= ele.remark;} else {ele.current=true;ele.done=true;ele.text = (ele.proccessName || '') + "-" + (ele.name || '');ele.endTimeStr=DateUtil.format(ele.endTime, 'yyyy-MM-dd HH:mm:ss')ele.desc= ele.remark;}}this.formProps= formProps;this.$apply();}events = {}onLoad(option) {this.option= option;this.$apply();this.getInfo(option.id);}}</script><stylelang="less">.dudu_table_title {text-align: center;background-color: #eee;color: #333333;font-size: 20rpx;padding: 20rpx 15rpx 20rpx 15rpx;}.dudu_table_context {text-align: center;background-color: #fff;color: #333333;font-size: 20rpx;padding: 20rpx 15rpx 20rpx 15rpx;border: 0 solid #e5e5e5;border-width: 1px;border-radius: 1px;min-height: 60rpx; // 处理文字超长white-space: nowrap;text-overflow: ellipsis;overflow: hidden;}.dudu_labelStyle {min-width: 150rpx;}.customerName {font-size: 30rpx;}.dudu_contextStyle {margin-right: 10rpx;}.dudu_contextStyle-customer {font-size: 30rpx;}.weui-form-preview__item::after {}.dudu_border-bottom {border: 0 solid #e5e5e5;border-bottom-width: 1px;}</style><templatelang="wxml"><view><formbindsubmit="formSubmit"bindreset="formReset"><viewclass="zan-panel"><viewclass="zan-cell zan-field"><viewclass="zan-cell__hd zan-field__title">首付</view><viewclass="zan-field__input zan-cell__bd"><inputname="downPayment"type="number"value="{{submitData.orderPlanAttr_actual.downPayment}}"placeholder=""/></view><viewclass="myInputIcon"></view></view><viewclass="zan-cell zan-field"><viewclass="zan-cell__hd zan-field__title">月供</view><viewclass="zan-field__input zan-cell__bd"><inputname="monthly"type="number"value="{{submitData.orderPlanAttr_actual.monthly}}"placeholder=""/></view><viewclass="myInputIcon"></view></view><viewclass="zan-cell zan-field"><viewclass="zan-cell__hd zan-field__title">分期数</view><viewclass="zan-field__input zan-cell__bd"><inputname="month"type="number"value="{{submitData.orderPlanAttr_actual.month}}"placeholder=""/></view><viewclass="myInputIcon"></view></view><viewclass="zan-cell zan-field"><viewclass="zan-cell__hd zan-field__title">尾款</view><viewclass="zan-field__input zan-cell__bd"><inputname="finalPay"type="number"value="{{submitData.orderPlanAttr_actual.finalPay}}"placeholder=""/></view><viewclass="myInputIcon"></view></view><viewclass="zan-cell zan-field"><textclass="zan-cell__hd zan-field__title">首次支付是否包含月供</text><viewclass="zan-field__input zan-cell__bd"><pickername="monthly_coin"mode="selector"range="{{ coins }}"value="{{ coinsIndex }}"range-key="label"bindchange="bindMonthlyCoinsChange"><divclass="type">{{ coins[coinsIndex].label }}</div></picker></view></view><viewclass="zan-cell zan-field"><textclass="zan-cell__hd zan-field__title">审核结果</text><viewclass="zan-field__input zan-cell__bd"><pickername="state"mode="selector"range="{{ states }}"value="{{ statesIndex }}"range-key="label"bindchange="bindStatesChange"><divclass="type">{{ states[statesIndex].label }}</div></picker></view></view><viewwx:if="{{ticheStateCoin}}"class="zan-cell zan-field"><textclass="zan-cell__hd zan-field__title">预计提车时间</text><viewclass="zan-field__input zan-cell__bd"><pickername="pickTime_info"mode="date"value="{{pickTime_info}}"end="2020-09-01"bindchange="bindDateChange"><viewclass="picker"><divclass="inviteDate_info"> {{pickTime_info}}</div></view></picker></view></view><viewclass="zan-cell zan-field"><viewclass="zan-cell__hd zan-field__title">备注</view><viewclass="zan-field__input zan-cell__bd"><textareaname="remark"bindblur="bindRemarkTextarea"value="{{submitData.remark}}"placeholder="必填,请输入备注...最长140字"/></view></view></view><viewclass="btn-area submitButton"><buttonclass="weui-btn"formType="submit">提交信息</button></view></form></view></template><script>import wepy from 'wepy';import Tips from "../../../../utils/tip";import util from "../../../../utils/util";import wxRequest from "../../../../utils/wxRequest";import Validate from "../../../../utils/Validate";import OrderState from "../../../../utils/OrderState";import { CglobalData } from "../../../../utils/constant";export default class Com extends wepy.component {components = {};props = {taskId: { // 单向传值type: Number,default: 0,},con_data: { // 单向传值type: Object,default: {},},};data = {con_data: {},submitData: { plan: {}, orderPlanAttrs: {}, orderPlanAttr_actual: {}, remark: " " },coins: [{ value: 0, label: '是' }, { value: 1, label: '否' }],coinsIndex: 0,states: [{ value: OrderState.getByKey('NOPASS_PLAN').value, label: '方案不通过' },{ value: OrderState.getByKey('NOPASS_CREDIT').value, label: '征信不通过' },{ value: OrderState.getByKey('BUSINESS_CLOSE').value, label: '黑户不做 关闭订单' },{ value: OrderState.getByKey('BESUBMIT_APPROVE').value, label: '审核通过' }],statesIndex: 0,ticheStateCoin: false,pickTime_info: util.getYesterdayTimeWhithoutHFS(),};methods = {formReset: function() {console.log("form发生了reset事件");},formSubmit: function(e) {let self = this;wx.showModal({title: '确认提交',content: '',success: function(res) {if (res.confirm) {console.log('用户点击确定')console.log("form发生了submit事件,携带数据为:", e.detail.value);self.validateValue(e.detail.value);} else if (res.cancel) {console.log('用户点击取消')}}})},bindMonthlyCoinsChange(e) {console.log("bindMonthlyCoinsChange picker发送选择改变,携带值为", e.detail.value);this.coinsIndex = e.detail.value;},bindStatesChange(e) {console.log("bindStatesChange picker发送选择改变,携带值为", e.detail.value);this.statesIndex = e.detail.value;this.submitData.state = this.data.states[e.detail.value].value;if (this.data.states[e.detail.value].value == OrderState.getByKey('BESUBMIT_APPROVE').value) {this.ticheStateCoin = true;} else {this.ticheStateCoin = false;}// this.$apply();},bindDateChange: function(e) {console.log("bindDateChange picker发送选择改变,携带值为", e.detail.value);this.pickTime_info = e.detail.value;},bindRemarkTextarea: function(e) {this.submitData.remark = e.detail.value;},bindSubmitDataChange: function(e) {// body...}};validateValue(param) {// console.info("param", param);if (!Validate.required(param.downPayment) || !Validate.digits(param.downPayment)) {Tips.alert('请检查 首付 信息');return;}if (!Validate.required(param.monthly) || !Validate.digits(param.monthly)) {Tips.alert('请检查 月供 信息');return;}if (!Validate.required(param.month) || !Validate.digits(param.month)) {Tips.alert('请检查 分期数 信息');return;}if (!Validate.required(param.finalPay) || !Validate.digits(param.finalPay)) {Tips.alert('请检查 尾款 信息');return;}if (!Validate.required(param.remark)) {Tips.alert('请检查 备注 信息');return;}console.log('验参通过')this.handleSubmit(param);}async handleSubmit(param) {// console.info('handleSubmit param', param)// console.info('handleSubmit submitData', this.data.submitData)// _dd 为总参数let _dd = this.data.submitData || {};//let _rr = "";for (var i = 0; i <this.states.length; i++) {if (this.states[i].value == _dd.state) {_rr=this.states[i].label;}}_dd.taskId=this.data.taskId;_dd.pickTime=this.data.pickTime_info;_dd.remark=param.remark;// console.info('this.data.pickTime_info ....:', this.data.pickTime_info)varremark=_rr;// 构建备注if (_dd.state == OrderState.getByKey('BESUBMIT_APPROVE').value) {console.log('本次是BESUBMIT_APPROVE 用原本的方案信息')this.data.submitData.orderPlanAttr_actual= this.data.submitData.orderPlanAttr_actual_tmp;remark += (" " + "预约交车时间:" + (_dd.pickTime));}_dd.remark= remark + " " + _dd.remark;// 更新orderPlanAttr_actual的信息this.submitData.orderPlanAttr_actual.downPayment=param.downPayment;this.submitData.orderPlanAttr_actual.monthly=param.monthly;this.submitData.orderPlanAttr_actual.month=param.month;this.submitData.orderPlanAttr_actual.finalPay=param.finalPay;this.submitData.orderPlanAttr_actual.monthly_coin= this.data.coins[this.data.coinsIndex].value;// 拼接info信息_dd.info=JSON.stringify({ "plan": this.data.submitData.plan, "orderPlanAttrs": this.data.submitData.orderPlanAttrs, "orderPlanAttr_actual": this.data.submitData.orderPlanAttr_actual });console.info('_dd afterHandled:', _dd)constres=awaitwxRequest.ajaxByPromise2("POST",CglobalData.REQUEST_URL_PRE_MIS + "/task/completeTask.do",_dd);// 退回上一个页面 并刷新列表wx.setStorageSync('needRefreshPage', true)await wepy.showModal({title: "提示",content: "商务审核成功成功",showCancel: false,});wepy.navigateBack({delta: 1});}events = {}watch = {taskId(newValue, oldValue) {this.taskId=newValue;},con_data(newValue, oldValue) {this.con_data=newValue;// console.info('con_data newValue', newValue)let_temp=newValue.businessInfo.businessInfo;this.submitData.plan=_temp.plan || {};this.submitData.plan.state=null;this.submitData.orderPlanAttrs=_temp.orderPlanAttr || {};this.submitData.orderPlanAttr_actual=_temp.orderPlanAttr_actual || {};// 实际订单信息备份this.submitData.orderPlanAttr_actual_tmp=JSON.parse(JSON.stringify(_temp.orderPlanAttr_actual || {}));}}onLoad() {}}</script>看一下完整的代码