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 相关文章推荐
jQuery 开发者应该注意的9个错误
May 03 Javascript
基于JQuery实现的图片自动进行缩放和裁剪处理
Jan 31 Javascript
让JavaScript的Alert弹出框失效的方法禁止弹出警告框
Sep 03 Javascript
用JS写的一个Ajax库(实例代码)
Aug 06 Javascript
js判断是否为空和typeof的用法(详解)
Oct 07 Javascript
关于vue-resource报错450的解决方案
Jul 24 Javascript
JS 中LocalStorage和SessionStorage的使用
Aug 17 Javascript
对VUE中的对象添加属性
Sep 18 Javascript
在axios中使用params传参的时候传入数组的方法
Sep 25 Javascript
element vue validate验证名称重复 输入框与后台重复验证 特殊字符 字符长度 及注意事项小结【实例代码】
Nov 20 Javascript
js 下拉菜单点击旁边收起实现(踩坑记)
Sep 29 Javascript
JavaScript数组及常见操作方法小结
Nov 13 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
PHP面向对象编程快速入门
2006/12/14 PHP
PHP中去除换行解决办法小结(PHP_EOL)
2011/11/27 PHP
PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
2012/04/09 PHP
PHP中file_exists()判断中文文件名无效的解决方法
2014/11/12 PHP
php实时倒计时功能实现方法详解
2017/02/27 PHP
[原创]php实现数组按拼音顺序排序的方法
2017/05/03 PHP
php和redis实现秒杀活动的流程
2019/07/17 PHP
Jquery知识点三 jquery表单对象操作
2011/01/17 Javascript
JavaScript中的null和undefined解析
2012/04/14 Javascript
jQuery中closest()函数用法实例
2015/01/07 Javascript
Javascript实现div层渐隐效果的方法
2015/05/30 Javascript
JavaScript地理位置信息API
2016/06/11 Javascript
预防网页挂马的方法总结
2016/11/03 Javascript
微信小程序用户自定义模版用法实例分析
2017/11/28 Javascript
解决前后端分离 vue+springboot 跨域 session+cookie失效问题
2019/05/13 Javascript
史上最为详细的javascript继承(推荐)
2019/05/18 Javascript
Vue组件通信$attrs、$listeners实现原理解析
2020/09/03 Javascript
Ajax获取node服务器数据的完整步骤
2020/09/20 Javascript
python 中文乱码问题深入分析
2011/03/13 Python
Python实现查找系统盘中需要找的字符
2015/07/14 Python
Python 爬虫学习笔记之多线程爬虫
2016/09/21 Python
python 将json数据提取转化为txt的方法
2018/10/26 Python
Python实现报警信息实时发送至邮箱功能(实例代码)
2019/11/11 Python
python读取配置文件方式(ini、yaml、xml)
2020/04/09 Python
python3的pip路径在哪
2020/06/23 Python
使用layui实现左侧菜单栏及动态操作tab项的方法
2020/11/10 HTML / CSS
Nordgreen手表德国官方网站:丹麦极简主义手表
2019/10/31 全球购物
单位实习证明怎么写
2014/01/17 职场文书
简历自我评价模版
2014/01/31 职场文书
运动会搞笑广播稿
2014/10/14 职场文书
民主评议党员工作总结
2014/10/20 职场文书
2014年应急工作总结
2014/12/11 职场文书
社区党建工作总结2015
2015/05/13 职场文书
Go各时间字符串使用解析
2021/04/02 Golang
Win11 BitLocker 驱动器加密
2022/04/19 数码科技
解决 redis 无法远程连接
2022/05/15 Redis