【问题标题】:Mount component into DOM with JS in Vue.js在 Vue.js 中使用 JS 将组件挂载到 DOM 中
【发布时间】:2019-05-31 05:13:12
【问题描述】:

我正在使用 Vue.JS 为网页游戏制作 GUI,现在我使用 http-vue-loader 来避免使用 Webpack 和类似的东西(对不起,但我真的很讨厌它)。

现在,通常我将我的组件放入我的 DOM 是这样的:

GUI.js

    // Creating Vue.js istance for GUI
    Pixua.GUI = new Vue({
      el: '#GUI',
      components: {
        'Debug': httpVueLoader('./gui/windows/Debug.vue')
      },
      data: {
        row: 0,
        column: 0
      }
    });

Index.html

<div id="GUI">
      <windows id="windows">
           <debug v-bind:row="row" v-bind:column="column" ></debug>
      </windows>
</div>

Debug.vue(这是我的组件)

<template>
  <px-window title="Debug" :width="200" :is-open.sync="isOpen">
      Casella cliccata:
      <ul>
        <li>Riga: {{row}}</li>
        <li>Colonna: {{column}}</li>
      </ul>
  </px-window>
</template>

<script>
module.exports = {
    props: ['row','column'],
    data: function() {
        return {
            isOpen: true
        }
    }
}

</script>

<style>
</style>

现在我的问题是:是否可以使用 JS(通过 GUI.js)动态地将组件安装/渲染到 DOM 中,而无需在 index.html 中指定它(所以没有&lt;debug v-bind:row="row" v-bind:column="column" &gt;&lt;/debug&gt;)?

【问题讨论】:

  • 您的调试组件使用了px-window 组件,但这并未声明为组件,也未导入。也许您的问题与此有关。
  • 对不起,我忘了说我也用vue-window组件:github.com/michitaro/vue-window(px-window来自这个组件)。

标签: javascript vue.js vuejs2 vue-component


【解决方案1】:

您可以使用Dynamic components

<component v-bind:is="myComponent"></component>

然后把myComponent的值改成你要加载的组件。

data() {
    return {
        myComponent: 'debug'
    }
}

将渲染调试组件

【讨论】:

  • 已经检查过了,但是我正在制作一个基于窗口系统的 GUI(所以我可以同时打开许多 Windows),我想要避免的是必须将它们全部插入进入 Index.html。另一个问题是,这是一款具有客户端-服务器架构的多人游戏,我需要使用服务器发送的文本生成未知数量的窗口,所以我不知道我需要多少个窗口。
  • 好像 mount() 需要一个静态容器(例如
    )在那里,看来我们只是在 '#app' 下创建一个带有 id 的子节点=$pageId(假设 pageId 是唯一的)然后在其上挂载我们的 Vue 实例,卸载页面后,让我们删除占位符子节点。
  • @MattiaDelFranco 如果你找到了,你能分享你的解决方案吗?我有类似的要求,但我不熟悉 vue js 的高级功能。
猜你喜欢
  • 2019-02-03
  • 1970-01-01
  • 2018-07-27
  • 2019-07-07
  • 1970-01-01
  • 2019-04-07
  • 2021-09-01
  • 2019-03-17
  • 1970-01-01
相关资源
最近更新 更多