javascript - 如果具有 id 的元素不存在,则阻止安装组件
问题描述
我正在开发一个使用表单生成器(Symfony)生成表单的项目。在某些情况下,下面的内部 Vue 组件根据作为 prop 传入的输入 id 用更灵活的基于 html 的文本编辑器替换标准 TextArea 输入。
问题是,在某些情况下,带有 id 的元素image_id
不会出现在页面上,因此会产生大量 javascript 错误(因为页面是使用模板呈现的)。
如果页面上有一个 id 的元素,是否可以仅安装组件,否则完全阻止组件的安装?image-uploader
#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>
解决方案
您可以简单地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>
推荐阅读
- python - Selenium 异常:“组件未初始化”
- reactjs - authProvider is finishing its Promise after the Dashboard being mounted
- docker - Docker --add-host 和 Docker 组合
- ruby-on-rails - 错误:主页中的 Webpacker::Manifest::MissingEntryError#welcome with ruby on rails
- html - 在触摸离子3上改变像素的颜色
- python - How do I open window from another that's already open?
- android-support-library - 更新库以支持 AndroidX
- javascript - How I can block the access of a route to specific users
- google-cloud-firestore - PhpStorm 为 Firebase 规则添加语法高亮和智能感知
- java - Why does my algorithm to output every digit of a sum fail In PTA?