vue v-model动态生成详解


Posted in Javascript onJune 30, 2018

1.input 输入框 v-model 绑定的字段名需要根据后台返回的数据动态生成,此时就不可以用 v-model绑定,而是用传统的方法 value 动态绑定,并且用子组件绑定向父组件传递值和事件。 代码如下:

//子组件
<template>
 <input v-if="type === 0" type="text" :value="currentValue" @change="handleInput">
 <textarea v-else :value="currentValue" @change="handleInput"></textarea>
</template>

<script>
export default {
// 接收父组件传递过来的状态(值)
 props: {
  type: Number,  //0 input框 1 文本域
  value: String  // 值有时候编辑状态也是先要获取值的 类似 v-model
 },
 data() {
  return {
   currentValue: this.value
  }
 },
 methods: {
  handleInput(e) {
   let value = e.target.value
   if (value === this.currentValue) {
    return
   } else {
    this.currentValue = value
   }
   this.$emit('input', value)
  }
 }
}
</script>
//父组件
//extendTypes 动态获取过来的扩展字段 需要绑定的model 为item.extendKey

<div class="form-group" v-for="item in extendTypes">
  <div>
   <ad-input :value="extendTypesModel[item.extendKey]" :type="item.type" @input="handleUpdate(item.extendKey, $event)">
   </ad-input>
  </div>
</div>
// model是动态的,不可以写死,只能在本地先定义一个json extendTypesModel,在获取过来后台的数据之后,本地赋值为空
this.extendTypesModel = {}
if (res && res.code === 0) {
  for (let i = 0; i < res.data.length; i++) {
  this.extendTypesModel[res.data[i].extendKey] = ''
}
  this.extendTypes = res.data
}
//父组件注册的事件
handleUpdate(key, value) {
 this.extendTypesModel[key] = value
}

父子组件通过自定义属性和自定义事件实现通信。

父组件 自定义属性 v-bind 将父的值传给子

子组件通过 props 来接受 父的值,接受后 可以想data 一样直接拿来使用。

子组件内部 通过 $.emit( 父组件方法名,value) 方法向父组件传值,父组件拿到值 并触发父组件的事件了。

这种方式现在看来是个坑啊 因为子组件对数据会有个缓存,每次不是新生成一个 input框,而是看之前有没有生成过,有的话就不生成了,所以数据有个缓存,清除不了 简直换个更简单的方式

<div class="form-group" v-for="(item, index) in extendTypes">
  <label class="control-label">{{item.extendName}}</label>

  // 既不需要用v-model绑定 也不需要用到子组件 将赋值和取值分开来 而不是用 v-model去绑定,这里取值用到 ref

    <input class="form-control" :value="extendTypesModel[item.extendKey]" @input="handleUpdate(item.extendKey, index)" ref="ipt">
   </div>
   <div class="text-danger" v-if="item.isRequired === 1">*</div>
</div>
handleUpdate(key, index) {
  this.extendTypesModel[key] = this.$refs.ipt[index].value
}

ref绑值取值ref给元素或者子组件注册引用信息,绑定在this.ref绑值取值ref给元素或者子组件注册引用信息,绑定在this.refs 上边。如果是v-for 遍历的话,绑定的就是个数组。

一般通过 $ref.name.value 来取值

Javascript 相关文章推荐
js实现iframe动态调整高度的代码
Jan 06 Javascript
javascript使用activex控件的代码
Jan 27 Javascript
jQuery 仿百度输入标签插件附效果图
Jul 04 Javascript
详解jQuery UI库中文本输入自动补全功能的用法
Apr 23 Javascript
JS模拟实现方法重载示例
Aug 03 Javascript
AngularJs 指令详解及示例代码
Sep 01 Javascript
vue生成token保存在客户端localStorage中的方法
Oct 25 Javascript
使用nvm管理不同版本的node与npm的方法
Oct 31 Javascript
Angular实现的简单定时器功能示例
Dec 28 Javascript
JavaScript继承的特性与实践应用深入详解
Dec 30 Javascript
简单了解JS打开url的方法
Feb 21 Javascript
vue动态绑定style样式
Apr 20 Vue.js
vue-router+nginx 非根路径配置方法
Jun 30 #Javascript
Vue项目中添加锁屏功能实现思路
Jun 29 #Javascript
angular6.0开发教程之如何安装angular6.0框架
Jun 29 #Javascript
详解Angular6.0使用路由步骤(共7步)
Jun 29 #Javascript
详解基于Vue-cli搭建的项目如何和后台交互
Jun 29 #Javascript
jQuery实现模糊搜索功能的方法分析
Jun 29 #jQuery
微信小程序中进行地图导航功能的实现方法
Jun 29 #Javascript
You might like
substr()函数中文版
2006/10/09 PHP
怎么样可以把 phpinfo()屏蔽掉?
2006/11/24 PHP
修改php.ini以达到屏蔽错误信息并记录日志
2013/06/16 PHP
ThinkPHP利用PHPMailer实现邮件发送实现代码
2013/09/26 PHP
php 从指定数字中获取随机组合的简单方法(推荐)
2017/04/05 PHP
jquery实现固定顶部导航效果(仿蘑菇街)
2013/03/21 Javascript
jQuery动态修改超链接地址的方法
2015/02/13 Javascript
jQuery实现首页图片淡入淡出效果的方法
2015/06/10 Javascript
JS动态增删表格行的方法
2016/03/03 Javascript
JavaScript 2048 游戏实例代码(简单易懂)
2016/03/25 Javascript
使用JavaScript实现表格编辑器(实例讲解)
2017/08/02 Javascript
微信小程序学习笔记之本地数据缓存功能详解
2019/03/29 Javascript
详解基于Vue的支持数据双向绑定的select组件
2019/09/02 Javascript
基于jQuery拖拽事件的封装
2020/11/29 jQuery
[01:03:37]Secret vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
[51:17]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.22
2019/09/05 DOTA
python字符串中的单双引
2017/02/16 Python
python bmp转换为jpg 并删除原图的方法
2018/10/25 Python
Ubuntu下升级 python3.7.1流程备忘(推荐)
2018/12/10 Python
详解python--模拟轮盘抽奖游戏
2019/04/12 Python
scrapy-redis源码分析之发送POST请求详解
2019/05/15 Python
python实现差分隐私Laplace机制详解
2019/11/25 Python
python3获取控制台输入的数据的具体实例
2020/08/16 Python
Python使用struct处理二进制(pack和unpack用法)
2020/11/12 Python
俄罗斯三星品牌商店:Samsungstore
2020/04/05 全球购物
应届生求职简历的自我评价怎么写
2013/10/23 职场文书
大学生个人事迹材料
2014/01/21 职场文书
小学教师师德师风自我剖析材料
2014/09/29 职场文书
2014年社区工作总结
2014/11/18 职场文书
小学一年级数学教学计划
2015/01/20 职场文书
个人自荐书范文
2015/03/09 职场文书
运动会加油稿50字
2015/07/21 职场文书
毕业生求职自荐信(2016最新版)
2016/01/28 职场文书
Python控制台输出俄罗斯方块移动和旋转功能
2021/04/18 Python
为什么RedisCluster设计成16384个槽
2021/09/25 Redis
python编程项目中线上问题排查与解决
2021/11/01 Python