Reputation: 23
How to "Hide empty tabs" If it has no content to show in Vue js???
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item">
<a
class="nav-link active"
id="description-tab"
data-toggle="tab"
href="#description"
role="tab"
aria-controls="description"
aria-selected="true">{{ ('Description') }}</a>
</li>
<li class="nav-item">
<a
class="nav-link"
id="specification-tab"
data-toggle="tab"
href="#specification"
role="tab"
aria-controls="specification"
aria-selected="false">{{ ('Specification') }}</a>
</li>
</ul>
<div class="tab-content py-4">
<div
class="tab-pane fade show active"
id="description"
role="tabpanel"
aria-labelledby="description-tab"
v-html="product.description">
</div>
<div
class="tab-pane fade"
id="specification"
role="tabpanel"
aria-labelledby="specification-tab"
v-html="product.specification">
</div>
</div>
Tried this: [didn't work]
hidetabs () {
const tabs = document.querySelectorAll(".tab-content py-4 > div[id^=tab]:empty");
for (const tab of tabs) {
console.log("hi")
document.querySelector(`a[href="${tab.id}"]`).parentNode.remove();
}},
Upvotes: 1
Views: 403
Reputation: 5542
As the comment suggests, in Vue.js you got the v-if
directive, which is used to conditionally render a block. The block will only be rendered if the directive’s expression returns a truthy value.
A small example from the documentation:
<h1 v-if="awesome">Vue is awesome!</h1>
So with your code it could be similar to this:
<ul class="nav nav-tabs" role="tablist">
<li v-if="product.description" class="nav-item">
<a class="nav-link active" id="description-tab" data-toggle="tab" href="#description" role="tab" aria-controls="description" aria-selected="true">{{ ('Description') }}</a>
</li>
<li v-if="product.specification" class="nav-item">
<a class="nav-link" id="specification-tab" data-toggle="tab" href="#specification" role="tab" aria-controls="specification" aria-selected="false">{{ ('Specification') }}</a>
</li>
</ul>
<div class="tab-content py-4">
<div v-if="product.description" class="tab-pane fade show active" id="description" role="tabpanel" aria-labelledby="description-tab" v-html="product.description">
</div>
<div v-if="product.specification" class="tab-pane fade" id="specification" role="tabpanel" aria-labelledby="specification-tab" v-html="product.specification">
</div>
</div>
I hope it helps!
Upvotes: 1