后台管理-----搜索框重置

1.之前想的方案是准备采用数据的双向绑定来实现的

2.因为双向绑定无非本质上就是一个语法糖,既然是一个语法糖,完全可以写成一个

:model-value,这个时候就不是去formData 里面取值了,因为最终这个值是page-Search 传给了hy-form ,又传给了到了这个上面来(:model-value),将传过来的值绑定到(

:modle-value 上),直接从modeValue 取出我们的属性绑定这个上面去。

只是在这里做了一个值绑定,把modeValue 里面的值绑定到el-input 上面

 也就是我们现在直接是把最新的值直接绑定到这个上面去的

 <div class="hy-from">
    <!-- 标题 -->
<div class="header">
  <slot name="header"></slot>
</div>
 <el-form label-witdh="labelWhidth">
    <el-row>
     <!-- 遍历拿到的数据 -->
    <template v-for="item in formItems" :key="item.label">
     <el-col v-bind="collayout">
     <el-form-item :label="item.label" :style="itemStyle">
      <template v-if="item.type==='input'|| item.type==='password'">
              <el-input
              :placeholder="item.placeholder"
              :show-password="item.type==='password'"
             :model-value="modelValue[`${item.field}`]"
              />
            </template>
            <template v-else-if="item.type==='select'">
             <el-select
             :placeholder="item.placeholder"
             :model-value="modelValue[`${item.field}`]">
            <el-option v-for="option in item.options"
            :key="option.value"
            :value="optionvalue">
            {{option.title}}</el-option>
             </el-select>
            </template>
             <template v-else-if="item.type==='datepicker'">
             <el-date-picker v-bind="item.otherOptions"
               :model-value="modelValue[`${item.field}`]">
              </el-date-picker>
            </template>
        </el-form-item>
          </el-col>
          </template>
        </el-row>
      </el-form>
<div class="footer">
  <slot name="footer"></slot>
</div>
  </div>

 3.第三步:就是把传进来的modelValue 的值,赋值到这个每一个搜索框中,如果这里的值改变,就会调用,@update:modleValue ,就是说会触发这么一个事件。

//$event: 拿到内部这里传过来的值
//item.field  当前的字段
@uptade:modelValue="handleValueChange($event,item.field)"
  <div class="hy-from">
    <!-- 标题 -->
<div class="header">
  <slot name="header"></slot>
</div>
 <el-form label-witdh="labelWhidth">
        <el-row>
          <!-- 遍历拿到的数据 -->
       <template v-for="item in formItems" :key="item.label">
         <el-col v-bind="collayout">
          <el-form-item :label="item.label" :style="itemStyle">
            <template v-if="item.type==='input'|| item.type==='password'">
              <el-input
              :placeholder="item.placeholder"
              :show-password="item.type==='password'"
             :model-value="modelValue[`${item.field}`]"
             @update:modelValue="handleValueChange($event,item.field)"
              />
            </template>
            <template v-else-if="item.type==='select'">
             <el-select
             :placeholder="item.placeholder"
             :model-value="modelValue[`${item.field}`]"
            @update:modelValue="handleValueChange($event,item.field)"
             >
            <el-option v-for="option in item.options"
            :key="option.value"
            :value="optionvalue">
            {{option.title}}</el-option>
             </el-select>
            </template>
          <template v-else-if="item.type==='datepicker'">
         <el-date-picker v-bind="item.otherOptions"
          :model-value="modelValue[`${item.field}`]"
        @update:modelValue="handleValueChange($event,item.field)"
        >
       </el-date-picker>
         </template>
        </el-form-item>
          </el-col>
          </template>
        </el-row>
      </el-form>
<div class="footer">
  <slot name="footer"></slot>
</div>
  </div>

第4步:一旦上面的值发生改变的时候,就会执行下面这个函数

//方案2:
//拿到最新的值和 field 了
const handleValueChange=(value:any,field:string)=>{ 
//一旦值改变就把这个事件给发出去,顺变把这个大的对象给传出去
emit('update:modelValue',{...props.modelValue,[field]:value}) //使用field 作为key,在把value 给传过去
}

第5步:发出去以后,在外界(父组件)就绑定到这里面去了

第6步:点击重置把formData 里面赋的值 在设置回原始的对象formOrignData

  //优化2:当我们的用户点击了重置的时候:就是把formData 里面赋的值 在设置回原始的对象formOrignData
   const handleResetClick=()=>{
     //方式2:
     formData.value=formOrignData

    // 方式1: //当我们点击重置的时候拿到了所有formOrginData 里面的key
    // for(const key in formOrignData){
    //   //通过这个key 去取到它所有的值,直接去修改fromDta 里面里面的某些属性
    //   formData.value[`${key}`]=formOrignData[key]
    // }
   }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值