代码之家  ›  专栏  ›  技术社区  ›  AnchovyLegend

如果ID为的元素不存在,则阻止安装组件

  •  0
  • AnchovyLegend  · 技术社区  · 8 年前

    我正在开发一个使用表单生成器(symfony)生成表单的项目。在某些情况下,下面的内部Vue组件使用更灵活的基于HTML的文本编辑器(基于作为属性传入的输入ID)替换标准的文本区域输入。

    在某些情况下,问题是具有ID的元素 image_id 不会出现在页面上,因此会生成大量的javascript错误(因为页面是使用模板呈现的)。

    可以吗 只有 安装 image-uploader 组件(如果存在ID为的元素) #image_id 在页面上,防止完全安装组件,否则?

    组件代码段

    mounted() {
                let DOMInput = document.getElementById(this.inputId);
                 //component does stuff if not null
                //need to prevent the mounting of this component altogether if it is null
    

    模板

    <image-uploader input-id="image_id"></image-uploader>
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   akuiper    8 年前

    您可以简单地添加 v-if 对组件的指令,并且仅当 image_id 找到:

    <image-uploader input-id="image_id" v-if="condition to check whether image-id exists"></image-uploader>
    

    new Vue({
      el: "#app",
      data: {
        idExist: null
      },
      mounted () {
        this.idExist = document.getElementById('test')
      }
    })
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
    
    <div id="app">
      <div id="test">test</div>
      <div v-if="idExist">render if test is here</div>
    </div>