I have a vue
component called <PlanView/>
, and I'm rendering this component conditionally:
<div v-if="show_plan" id="mainplan">
<PlanView/>
</div>
<div v-else>
<font-awesome-icon icon="fa-solid fa-angles-right" @click="openPlan"/>
</div>
openPlan() {
this.show_plan = true;
},
but I want the functionality to be called even if the component is not rendered, can you please advise me how can I do that? thanks in advance.
CodePudding user response:
If you want the component to be renedered and not displayed, you can hide the visibility of the template inside the component rather than hiding the complete compoenent.
Pass a prop to PlanView
to decide the template is to be rendered or not
<PlanView :showPlan="show_plan"/>
Accept the prop inside PlanView
component like
defineProps({
showPlan: {
type: Boolean,
required: false,
default: false
}
})
Render the template of PlanView
only if the prop is satisfied. So the template of PlanView
will be looking like
<template>
<!-- Div or some wraper element -->
<div v-if="showPlan">
<!-- Rest of your template here -->
</div>
</template>
CodePudding user response:
You can simply use v-show
instead of v-if
to provide the same functionality as the answer from @Nitheesh suggests.
<div v-show="show_plan" id="mainplan">
<PlanView/>
</div>
<div v-show="!show_plan" >
<font-awesome-icon icon="fa-solid fa-angles-right" @click="openPlan"/>
</div>
But I am not sure this is what you means by by calling the functionality.