vue动态配置模板 'component is'

<template>
  <div v-if='object.child'>
      <div  v-for="(item,ix) in object.child" :key="ix">
        <component :is="item.xtype" v-if='item'
          :objectVlue="objectVlue"
          :object="item">
        </component>
      </div>
  </div>
</template>
<script>
export default {
  data() {
    return {
    };
  },
  props: {
    objectVlue:Object,
    object:Object,
  },
  created() {
    var itemType = require(`../units/unit-type.js`).default||{};//1.0
    this.object.child.forEach(item=>{
      if(item.fileName){
        item.objDefault = require(`@/scene/${this.$route.query.typeName}/config/${item.fileName}.js`);//2.0
      }     
    })

    this.object.child.forEach(item=>{//动态显示当前组件
      if(itemType[item.xtype])
      Vue.component(
        itemType[item.xtype].componentName,
        () => import(`@/components/info-collection/moudel/${itemType[item.xtype].fileName}`)
      )
    })
  }
};
</script>
//1.0=============unit-type.js所有模板配置文件 =======================
export default {
  tablePartMerge: {//表格合并模板xtype
      componentName: "tablePartMerge",//组件名称
      fileName: "table-partInfo-merge"//文件所在路径
  },
  tablePartInfo: {
      componentName: "tablePartInfo",
      fileName: "table-partInfo"
  },
  ueditorUnit: {
      componentName: "ueditorUnit",
      fileName: "unit-ueditor"
  },
  filesUnit: {
      componentName: "filesUnit",
      fileName: "unit-files"
  },
  approves: {   // 正文信息(审批记录)
      componentName: "approves",
      fileName: "approves-unit"
  },
  requiredDate:{  // 要求完成日期
    componentName: "requiredDate",
    fileName: "required-date"
  },
}
//2.0====== table-partInfo-merge.js =========
module.exports = {
  "columns":[{
    "id": "partNumber",
    "disabled": false,
    "name":"物料编码",
    "placeholder": "",
    "required": true,
    "selectDetail": [],
    "show": false,
    "span": 24,
    "width":"150",
    "xtype": "select"//组件内用的表格
  }]
}

//=============父级传过来的 object =======================
module.exports = [
    {
        title: '正文信息',
        name: '1',
        id:"",
        child:[
            {
                id:'partInfoData',//id
                show:'true',//是否显示
                fileName:'tablePartInfo',//文件路径名
                xtype:'tablePartMerge'//表格模块
            },
            {
                id:'mainAttachements',//文本编辑器
                show:'true',
                fileName:'',
                xtype:'filesUnit'
            },
            {
                id:'vivo_RequestCompletionTime',//时间选择模块
                show:'true',
                fileName:'',
                xtype:'requiredDate'
            },
            {
                id:'approves',
                show:'true',
                fileName:'approval',
                xtype:'approves'
            }
        ]
    }
];
 

 

转载于:https://my.oschina.net/u/4099729/blog/3061428

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值