vueelement动态表单,vue动态标签

  vueelement动态表单,vue动态标签

  本文主要详细介绍Vue动态表单的应用。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下。

  

概述

  后台管理系统中有大量的表单需求。我们希望通过写一个json格式的数据,通过vue的循环,动态渲染动态表单。并且可以对外获取渲染后的表单数据,进行入库操作。

  

v-model的理解

  vue-model相当于将value,外部监听输入事件传递给表单元素。所以我们自己封装表单组件的时候,也可以传递一个value的值,监听input事件来获取输入值。

  输入类型=text v-model=thing

  !-等于-

  input type= text v-bind:value= thing

  v-on:input= thing=$ event . target . value

  

业务应用场景

  最近写了一个在线教育平台,发现在后台添加课程的时候,每个课程需要的参数都不一样(有些课程没有专门的参数)。在这种场景下使用固定的表单并不优雅,而且工作量巨大。为了解决这个问题,我们可以在添加课程时动态显示课程分类表的所需参数,获取输入的课程参数,构造数据,进行入库操作。

  通过组件展示分类

  !- reply.vue -

  模板

  差异

  里

  div v-if=data.id!=0 @ click= getfid(data . id):id= data . id { { data . name } }/div

  ul v-if=数据.儿童数据.儿童.长度0

  回复v-for= child in data . children :key= child . id :data= child /

  /ul

  /李

  /div

  /模板

  脚本

  从导入总线。/bus . js ;

  导出默认值{

  //声明名称

  姓名:回复,

  道具:[数据],

  //声明组件

  组件:{},

  //声明变量

  data() {

  返回{

  fid: 0,

  }

  },

  //自定义过滤器

  过滤器:{

  myfilter:函数(值){

  value=value.slice(0,3);

  返回值“* * * * * * * *”;

  }

  },

  //初始化方法

  已安装(){

  },

  //声明方法

  方法:{

  //点击分类id

  getfid:函数(fid) {

  this.fid=fid

  //console . log(this . FID);

  公交车。$emit(msg ,FID);

  localStorage.setItem(fid ,this . FID);

  //取消所有突出显示

  var divs=document . getelementsbyclassname( BG );

  //遍历选择器

  for(var I=divs . length-1;I=0;我- ) {

  //取消高亮显示

  divs[I]. class list . remove( BG );

  }

  //首先突出显示当前元素

  var my div=document . getelementbyid(FID);

  //动态添加突出显示的类选择器

  mydiv . class list . add( BG );

  }

  }

  }

  /脚本

  风格

  ul {

  左填充:10雷姆;

  列表样式:无;

  }。血糖

  背景:橙色;

  颜色:白色;

  }

  /风格

  使用第三方组件的ID来监控分类。

  !- bus.js -

  从“vue”导入Vue

  导出默认的新Vue();

  课程添加页面

  模板

  差异

  正面/正面

  H1课程提交页面/h1

  回复:data=mydata/

  范电池组

  van-field label= course title v-model= title /

  Van-field label=课程描述 v-model= desc rows= 5 type= textarea /

  Van-field label=球场价格 v-model=价格/

  参数中的div v-for=(值,键,索引

  van-field:label= key v-model= info[key]/

  /div

  van-button color= gray @ click= add course 保存课程/van-button

  /van单元组

  /div

  /模板

  脚本

  //导入其他组件

  从导入总线。/bus . js ;

  从导入答复。/回复;

  从导入标题。/heads ;

  导出默认值{

  //声明组件

  组件:{

  回复:回复,

  “头”:头,

  },

  //构造方法

  已创建(){

  //监控

  公交车。$on(msg ,target={

  console.log(目标);

  this.fid=target

  if (this.cid===0) {

  this.get_cate

  }否则{

  这个. toast.fail(您已经保存过课程了,无法再次选择分类);

  返回错误的

  }

  });

  },

  //声明变量

  data() {

  返回{

  //数据

  我的数据:{},

  //课程分类编号

  fid: localStorage.getItem(fid ),

  标题: ,

  价格: ,

  desc: ,

  cid: 0,

  视频:[],

  videosrc: ,

  参数:{},

  信息:{}

  }

  },

  //初始化方法

  已安装(){

  这个。get _ data();

  },

  //声明方法

  方法:{

  get_cate(fid) {

  这个。axios。get( http://localhost:5000/get cate/,{params: {fid: fid}}).然后(结果={

  var my params=result。数据。params

  if (myparams===) {

  myparams=null

  }

  myparams=JSON.parse(myparams)

  this.params=myparams

  对于(这个。参数中的变量键){

  这个. set(this.info,key,)

  }

  console.log(this.info)

  })

  },

  //添加课程

  addcourse: function () {

  定义变量列表=[];

  对于(这个。信息中的变量键){

  lists.push({key: key, value: this.info[key], label: this.params[key]})

  }

  var list_str=JSON.stringify(列表)

  var data_post={

  fid:这个。fid,

  标题:this.title,

  desc:这个。desc,

  价格:this.price,

  id:本地存储。getitem( user _ id ),

  }

  if (lists.length 0) {

  data_post={

  fid:这个。fid,

  标题:this.title,

  desc:这个。desc,

  价格:this.price,

  id:本地存储。getitem( user _ id ),

  params:list_str

  }

  }

  this.axios.post(

  http://localhost:5000/addcourse/,

  this.qs.stringify(data_post))。然后((结果)={

  if (result.data.code===200) {

  这个 toast.success(课程添加成功);

  这个。cid=结果。数据。cid

  }否则{

  这个100美元的吐司。失败(结果。数据。味精);

  }

  });

  },

  //获取数据

  get_data: function () {

  //发送请求

  this.axios.get(

  http://localhost:5000/catelist/).然后((结果)={

  console.log(结果);

  //声明根节点

  var mytree={id: 0,name: };

  mytree[ children ]=结果。数据;

  这个。我的数据=我的树;

  控制台。日志(这个。我的数据);

  });

  }

  }

  }

  /脚本

  样式范围

  ul {

  左填充:10雷姆;

  列表样式:无;

  }

  /风格

  小结

  简单的来说,就是我们在添加课程的时候选择分类,会以表单的形式动态展示出该分类下面我们必传的参数,用户添加课程,提高效率。

  以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: