使用form-create动态生成vue自定义组件和嵌套表单组件


Posted in Javascript onJanuary 18, 2019

使用form-create动态生成vue自定义组件和嵌套表单组件

[github]| [说明文档]

maker.create

通过建立一个虚拟 DOM的方式生成自定义组件

生成

Maker

let rule = [
 formCreate.maker.create('i-button').props({
  type:'primary',
  field:'btn'
  loading:true
 })
]
$f = formCreate.create(rule);

上面的代码是通过maker生成器动态生成一个正在加载的iview按钮组件

Json

let rule = [
 {
  type:'i-button',
  field:'btn'
  props:{
    type:'primary',
    field:'btn',
    loading:true
  }
 }
]
$f = formCreate.create(rule);

上面的代码是通过json方式动态生成一个iview按钮组件

修改

可以通过一下两种方式动态修改组件的配置项

通过rule修改组件生成规则

rule[0].props.loading = false;

通过$f.component()方法获取组件的生成规则并修改

$f.component().btn.props.loading = false;

示例

使用form-create动态生成vue自定义组件和嵌套表单组件

let rule = [
 {
  type:'row',
  children:[
   {
    type:'i-col',
    props:{
     span:12
    },
    children:[
     formCreate.maker.input('商品名称','goods_name','iphone'),
     formCreate.maker.number('商品加个','goods_price',8688)
    ]
   },
   {
    type:'i-col',
    props:{
     span:12
    },
    children:[
     formCreate.maker.dateTime('创建时间','create_at'),
     formCreate.maker.radio('是否显示','is_show').options([
      {value:1,label:'显示'},
      {value:0,label:'不显示'}
     ])
    ]
   }
  ]
 }
]

maker.template

通过模板的方式生成自定义组件,maker.createTmp方法是该方法的别名

生成

Maker

let rule = [
 formCreate.maker.template('<i-button :loading="loading">{{text}}<i-button>',new Vue({
  data:{
   loading:true,
   text:'正在加载中...'
  }
 }))
]

上面的代码是通过maker生成器动态生成一个正在加载的iview按钮组件

Json

let rule = [
 {
  type:'template',
  template:'<i-button :loading="loading">{{text}}<i-button>',
  vm:new Vue({
   data:{
    loading:true,
    text:'正在加载中'
   }
  })
 }
]
$f = formCreate.create(rule);

上面的代码是通过Json方式动态生成一个iview按钮组件

修改

可以通过一下两种方式动态修改vm组件内部的值

通过rule获取自定义组件的vm并修改

rule[0].vm.text = '加载完毕';
rule[0].vm.loading = false;

通过$f.component()方法获取自定义组件的vm并修改

$f.component().btn.vm.text = '加载完毕';
$f.component().btn.vm.loading = false;

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

Javascript 相关文章推荐
juqery 学习之三 选择器 可见性 元素属性
Nov 25 Javascript
js动态添加onload、onresize、onscroll事件(另类方法)
Dec 26 Javascript
jquery.Jcrop结合JAVA后台实现图片裁剪上传实例
Nov 05 Javascript
详解AngularJS中的表单验证(推荐)
Nov 17 Javascript
Vue2.0 http请求以及loading展示实例
Mar 06 Javascript
vue 配置多页面应用的示例代码
Oct 22 Javascript
详解js访问对象的属性和方法
Oct 25 Javascript
微信小程序实现录音时的麦克风动画效果实例
May 18 Javascript
JS中的算法与数据结构之队列(Queue)实例详解
Aug 20 Javascript
jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)
Nov 07 jQuery
js表达式与运算符简单操作示例
Feb 15 Javascript
Vue切换Tab动态渲染组件的操作
Sep 21 Javascript
jquery层次选择器的介绍
Jan 18 #jQuery
js实现图片放大并跟随鼠标移动特效
Jan 18 #Javascript
vue.js的双向数据绑定Object.defineProperty方法的神奇之处
Jan 18 #Javascript
jQuery无冲突模式详解
Jan 17 #jQuery
JQuery判断radio单选框是否选中并获取值的方法
Jan 17 #jQuery
React性能优化系列之减少props改变的实现方法
Jan 17 #Javascript
vue 项目接口管理的实现
Jan 17 #Javascript
You might like
全国FM电台频率大全 - 10 江苏省
2020/03/11 无线电
php Undefined index和Undefined variable的解决方法
2008/03/27 PHP
php获取远程图片的两种 CURL方式和sockets方式获取远程图片
2011/11/07 PHP
PHP把网页保存为word文件的三种方法
2014/04/01 PHP
PHP微信红包API接口
2015/12/05 PHP
PHP的Yii框架中创建视图和渲染视图的方法详解
2016/03/29 PHP
javascript判断非数字的简单例子
2013/07/18 Javascript
$.get获取一个文件的内容示例代码
2013/09/11 Javascript
javascript阻止scroll事件多次执行的思路及实现
2013/11/08 Javascript
三种取消选中单选框radio的方法
2014/09/09 Javascript
浅谈javascript事件取消和阻止冒泡
2015/05/26 Javascript
js小数运算出现多位小数如何解决
2015/10/08 Javascript
JavaScript简单遍历DOM对象所有属性的实现方法
2015/10/21 Javascript
Nodejs实战心得之eventproxy模块控制并发
2015/10/27 NodeJs
Vue.extend构造器的详解
2017/07/17 Javascript
详解使用VUE搭建后台管理系统(vue-cli更新至3.0)
2018/08/22 Javascript
vue+Vue Router多级侧导航切换路由(页面)的实现代码
2018/12/20 Javascript
vue基础之v-bind属性、class和style用法分析
2019/03/11 Javascript
简单了解vue中父子组件如何相互传递值(基础向)
2019/07/12 Javascript
pageGroup.js实现分页功能
2019/07/27 Javascript
layui type2 通过url给iframe子页面传值的例子
2019/09/06 Javascript
[01:13:46]iG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python处理Excel文件实例代码
2017/06/20 Python
Python 和 JS 有哪些相同之处
2017/11/23 Python
python将秒数转化为时间格式的实例
2018/09/16 Python
twilio python自动拨打电话,播放自定义mp3音频的方法
2019/08/08 Python
pytorch方法测试详解——归一化(BatchNorm2d)
2020/01/15 Python
接口自动化多层嵌套json数据处理代码实例
2020/11/20 Python
python 自定义异常和主动抛出异常(raise)的操作
2020/12/11 Python
Python datetime模块的使用示例
2021/02/02 Python
摩顿布朗英国官方网上商店:奢华沐浴、身体和头发护理
2016/10/29 全球购物
丝芙兰波兰:Sephora.pl
2018/03/25 全球购物
Schecker荷兰:狗狗用品和配件
2019/06/06 全球购物
上海方立数码笔试题
2013/10/18 面试题
装修公司工程部经理岗位职责
2015/04/09 职场文书
百年校庆感言
2015/08/01 职场文书