javascript - 如何在自定义元素中动态呈现 VueJS 模板

标签 javascript vue.js popup vue-component esri

我正在使用 Vue 构建带有 Esri 的 Mapping API 的应用程序。

通过 Esri API,我可以使用对象设置弹出模板内容:

const popupWindowTemplate = {
    title: "{mag} magnitude near {place}",
    content: getContent
 };

还有一个函数

getContent: function(){
      let node = document.createElement('div');
      node.innerHTML = "<button type='button'>Do my thing!</button>"
      return node;
}

但是,我希望 getTemplate 函数返回在 innerHTML 中呈现的 Vue 组件,而不是硬编码的 html。

我有一个组件:

 const buffer = Vue.component('do-mything', {
  template: '<div><button type="button" @click="domything">Do my thing!</button></div>',
  data() {
    return {
          somevalue: ''
        };
      }
});

并怀疑它与组件渲染函数有关,但一直无法弄清楚如何将组件插入 getContent 函数中。

最佳答案

假设您集成的那个 API 期望 getContent 方法返回一个 DOM 元素,您可以尝试:

  • 创建组件实例
  • 将其渲染为文档外(通过在组件实例上调用 $mount without args)
  • 返回组件被渲染到的 DOM 元素

实现上面的getContent方法可能如下所示:

getContent: function(){
  const vueComponent = new Vue({
    template: '<div><button type="button" @click="domything">Do my thing!</button></div>',
    methods: {
      domything() {
        console.log('Method was called')
      }
    }
  });
  return vueComponent.$mount().$el;
}

关于javascript - 如何在自定义元素中动态呈现 VueJS 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54185796/

相关文章:

javascript - YouTube 网格图库 : How can I get the player to appear in a popup?

html - Youtube 链接、iframe 和 css 使其看起来像弹出窗口

javascript - 如何使用 capybara 和恶作剧检查 Javascript 错误?

javascript - Angular2 TypeError : core_1. NgModule 不是函数

javascript - Highchart + IE = 灰度导出?

javascript - VUEJS动态绑定(bind)图片url

javascript - 使用 javascript 隐藏部分不起作用

javascript - 查找未销毁的 Vue 组件

javascript - 在 vue/vuex 中保存或取消编辑

java - Android 没有资源匹配 android :windowIsFloating