VUE 自定义组件模板的方法详解


Posted in Javascript onAugust 30, 2019

本文实例讲述了VUE 自定义组件模板的方法。分享给大家供大家参考,具体如下:

先说下需求吧,因为客户的用户群比较大,如果需求变动,频繁更新版本就需要重新开发和重新发布,影响用户的体验,考虑到这一层就想到,页面展示效果做动态可配,需求更新时,重新配置一份模板录入到数据库,然后根据用户选择的模板进行展示。

关于页面展示做的动态可配,我是参考vue的Component组件方式,开始时可能会遇到组件定义后不能加载的情况,并在控制台如下错误:You are using the runtime-only build of Vue where the template compiler is not available.......解决办法,如下图文件中添加 'vue$': 'vue/dist/vue.esm.js', 即可,具体原因自行百度吧。

VUE 自定义组件模板的方法详解

开始上代码:

1.最初版本的代码,这个是刚开始的时候测试一些想法

<template>
  <div >
   <ai-panel :testData="testData"></ai-panel>
  </div>
</template>
<script>
export default {
 data(){
    return {
     testData:{name:"李四"}
    }
  }
  ,components: { // 自定义组件
   aiPanel: {
    name: 'aiPanel',
    template: '<span>{{testData.name}}</span>',
    props: ['testData']//用作接收父级组件传递的参数 :testData="testData" 即可
    //这里还可以继续定义 子组件的 data,methods等
   }
  }
}
</script>

通过测试发现一些地方并不能自由的控制,例如后台传过来的html语句并不能很好的放入到子组件的template中,然后又根据vue的api重新优化了一版,如下

1.首先创建一个工具类 的js文件,js中添加如下代码

import Vue from 'vue'//引入vue
export function doComponents(opt){
 //opt 调用时传入 可以包含template的html语句,data中需要绑定的数据等
 let billItem = opt.billItem
 let billHtml =opt.billHtml;
 const myComponent = Vue.extend({
  template: billHtml,
  data() {
    return {
      billItem:billItem
    }
  },
  methods: {// 子模板中自定义事件
  }
 })
 // $mount(id)通过查找页面id手动挂载到页面
 new myComponent().$mount("#testTemplate")
}

2.页面代码如下

<template>
  <div>
     <div class="card main-form">
<!-- ai-btn是我自定义的按钮,大佬们可以换成element组件的按钮哈 -->
       <ai-btn title="查询" icon="el-icon-search" lcss="btn-org" @onClick="query"/>
     </div>
   <div ref="testTemplate" id="testTemplate">
   </div>
  </div>
</template>
<script>
import * as temp from "@/api/myTemplate";//上面 定义的js文件
export default {
 data(){
  return {
      billItem:{name:"测试"},
      billHtml:'<div class="org">{{billItem.name}}</div>',
    }
  },
  methods:{
    noResponse(){
     alert("系统升级中,暂时无法提供查询!");
    },
    query: function() {
      this.$http.post('/billing/qcdr/qryBillInfo').then((res)=> {
      //如果后台接口有数据可以 从res获取后台数据,我这里就直接用页面的测试数据了
       let option = {
         "billHtml":this.billHtml,
         "billItem":this.billItem
        }
       temp.doComponents(option);//加载模板
      }, (error)=>{
       this.$message.error("系统繁忙");
      })
    }
  }
}
</script>

这样每次查询都可以根据后台的返回的html重新生成页面 这样可以做到只需要搭建一次框架,后期可以根据客户的需求,重新配置模板,将模板中的html保存到数据库,通过指定模板展示,页面查询时,获取对应模板即可展示。

希望本文所述对大家vue.js程序设计有所帮助。

Javascript 相关文章推荐
在html页面上拖放移动标签
Jan 08 Javascript
AppBaseJs 类库 网上常用的javascript函数及其他js类库写的
Mar 04 Javascript
jQuery中(function(){})()执行顺序的理解
Mar 05 Javascript
jquery实现可拖拽弹出层特效
Jan 04 Javascript
通过Tabs方法基于easyUI+bootstrap制作工作站
Mar 28 Javascript
JS延时器提示框的应用实例代码解析
Apr 27 Javascript
基于Vue2的移动端开发环境搭建详解
Nov 03 Javascript
Javascript中的神器——Promise
Feb 08 Javascript
JS 60秒后重新发送验证码的实例讲解
Jul 26 Javascript
angular或者js怎么确定选中ul中的哪几个li
Aug 16 Javascript
浅谈vue项目利用Hbuilder打包成APP流程,以及遇到的坑
Sep 12 Javascript
vue实现抽屉弹窗效果
Nov 15 Javascript
Jquery动态列功能完整实例
Aug 30 #jQuery
vue 兄弟组件的信息传递的方法实例详解
Aug 30 #Javascript
微信小程序sessionid不一致问题解决
Aug 30 #Javascript
解析JS在获取当前月的最后一天遇到的坑
Aug 30 #Javascript
Vue函数式组件的应用实例详解
Aug 30 #Javascript
详解elementui之el-image-viewer(图片查看器)
Aug 30 #Javascript
vue+koa2实现session、token登陆状态验证的示例
Aug 30 #Javascript
You might like
模拟xcopy的函数
2006/10/09 PHP
php 魔术方法使用说明
2009/10/20 PHP
php魔术方法与魔术变量、内置方法与内置变量的深入分析
2013/06/03 PHP
解析PHP中VC6 X86和VC9 X86的区别及 Non Thread Safe的意思
2013/06/28 PHP
PHP中比较时间大小实例
2014/08/21 PHP
js 遍历对象的属性的代码
2011/12/29 Javascript
原生javascript实现拖动元素示例代码
2014/09/01 Javascript
JS实现跟随鼠标闪烁转动色块的方法
2015/02/26 Javascript
JavaScript中的Math.E属性使用详解
2015/06/12 Javascript
利用jQuery及AJAX技术定时更新GridView的某一列数据
2015/12/04 Javascript
JS+Canvas绘制时钟效果
2020/08/20 Javascript
AngularJS基础 ng-options 指令详解
2016/08/02 Javascript
详解Angular5 路由传参的3种方法
2018/04/28 Javascript
ES6关于Promise的用法详解
2018/05/07 Javascript
VUE简单的定时器实时刷新的实现方法
2019/01/20 Javascript
基于Taro的微信小程序模板消息-获取formId功能模块封装实践
2019/07/15 Javascript
vue实现评价星星功能
2020/06/30 Javascript
python 图片验证码代码分享
2012/07/04 Python
Python中对列表排序实例
2015/01/04 Python
Python使用微信SDK实现的微信支付功能示例
2017/06/30 Python
用python做一个搜索引擎(Pylucene)的实例代码
2017/07/05 Python
使用python实现希尔、计数、基数基础排序的代码
2019/12/25 Python
Tensorflow: 从checkpoint文件中读取tensor方式
2020/02/10 Python
Django中ORM的基本使用教程
2020/12/22 Python
纯CSS3实现带动画效果导航菜单无需js
2013/09/27 HTML / CSS
香港草莓网土耳其网站:Strawberrynet TR
2017/03/02 全球购物
美国演唱会和体育门票购买网站:Ticketnetwork
2018/10/19 全球购物
最新英语专业学生求职信范文
2013/09/21 职场文书
物业客服专员岗位职责
2013/11/30 职场文书
岗位廉洁从业承诺书
2014/03/28 职场文书
市场营销计划书
2015/01/17 职场文书
上级领导检查欢迎词
2015/09/30 职场文书
浅谈怎么给Python添加类型标注
2021/06/08 Python
nginx日志格式分析和修改
2022/04/28 Servers
python神经网络Xception模型
2022/05/06 Python
SpringBoot项目多数据源及mybatis 驼峰失效的问题解决方法
2022/07/07 Java/Android