问答

如何在vue.extend的模板中使用element-ui的组件?

作者:admin 2021-04-20 我要评论

问题描述 使用vue.extend方式写了一个组件,想在模板中使用el-table组件,elementui为全局引入 相关代码 customTable 组件 template el-table height="200px" :d...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

问题描述

使用vue.extend方式写了一个组件,想在模板中使用el-table组件,elementui为全局引入

相关代码

customTable组件

<template>
  <el-table height="200px" :data="list">
    <el-table-column prop="name" label="名字" />
    <el-table-column prop="addr" label="地址" />
  </el-table>
</template>

<script>
export default {
    props:{
        list:{
            type:Array
            default:function(){
                return []
            }
        }
    }
};
</script>

App组件

<template>
  <div id="app">
    <div ref="map" class="map" style="width: 100%; height: 100%"></div>
  </div>
</template>

<script>
import AMap from "AMap";
import Vue from "vue/dist/vue.esm.js";
import customTable from '@/components/table.vue'
export default {
  data() {
    return {
      map: null,
    };
  },
  mounted() {
    this.initMap();
  },
  methods: {
    initMap() {
      this.map = new AMap.Map(this.$refs.map, {
        center: [116.398801, 39.907123],
        zoom: 11,
      });
      const maker = new AMap.Marker({
        position: [116.398801, 39.907123],
        extData: [
          {
            name: "test",
            addr: "adfh",
          }
        ],
      });
      maker.on("click", (e) => {
        const self = this
        const extData = e.target.getExtData();
        const infowindowWrap = Vue.extend({
          template: ` <customTable :list="list"> </customTable>`,
          name: "test",
          components: {
            customTable:customTable
          },
          data() {
            return {
              list: extData,
            };
          },
          methods: {
            handlerClose() {
              self.map.clearInfoWindow();
            },
          },
        });
        const component = new infowindowWrap().$mount();
        const infowindow = new AMap.InfoWindow({
          isCustom: false,
        });
        infowindow.setContent(component.$el);
        infowindow.open(this.map, e.lnglat);
      });
      this.map.add(maker);
    },
  },
};
</script>

你期待的结果是什么?实际看到的错误信息又是什么?

期待结果:点击地图点位弹窗表格展示数据
错误信息:vue.esm.js?a026:628 [Vue warn]: Unknown custom element: <el-table> - did you register the component correctly? For recursive components, make sure to provide the "name" option.

###

报错很明显嘛 就是说你组件未注册 只需要加一句话就好啦
你这边 只
import customTable from '@/components/table.vue'
但是没有注册
所以加上下面这个就可以啦

 
export default {
  data() {
    return {
      map: null,
    };
  },
 components: {
// 这里就是注册你的组件
    customTable

},

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • nginx响应速度很慢

    nginx响应速度很慢

  • 点击选中的多选框,会在已选那一栏显示

    点击选中的多选框,会在已选那一栏显示

  • PHP 多态的理解

    PHP 多态的理解

  • 关于C语言中static的问题

    关于C语言中static的问题

腾讯云代理商
海外云服务器