동일한 VueJS 구성 요소 <managed-list>
을 두 번 사용하여 두 개의 다른 데이터 집합 . 각각은 고유 한 <section>
컨테이너에 표시되며,이 컨테이너는 nav-tab에서 v-if
을 사용하여 토글됩니다.v-if, v-else, v-else-if에서 동일한 구성 요소 태그가 Vue 인스턴스를 공유하지 못하게합니다.
이러한 구성 요소가 동일한 인스턴스로 인스턴스화 된 것으로 보입니다. 구성 요소의 created
후크에 console.log()
을 호출하고 페이지로드시 콘솔에 메시지를받습니다. 그러나 다른 데이터 표를 표시하기 위해 탭으로 이동하면 v-if
템플릿이 렌더링되지만 created
후크는 다시 실행되지 않습니다.
제 생각에 템플릿에 v-if
문을 사용하면 구성 요소가 제대로 만들어지고 소멸됩니다. 그러나 이것은 내 경우에는 일어나지 않는 것 같습니다. 내가 뭔가 잘못하고 있는거야?
<template>
<div>
<ul class="nav nav-tabs">
<li class="nav-item">
<router-link class="nav-link" :class="{active: $route.params.tab=='reports'}" to="reports">Reports</router-link>
</li>
<li class="nav-item">
<router-link class="nav-link" :class="{active: $route.params.tab=='snippets'}" to="snippets">Snippets</router-link>
</li>
</ul>
<section v-if="$route.params.tab == 'reports'">
<h2>Reports</h2>
<managed-list
:imports-disabled="true"
prop-delete-endpoint="ReportTemplate/delete"
prop-resource-url="ReportTemplate"
:prop-fetch-url="'ReportTemplate/filter?filters='+reportFilter"
prop-edit-action="/reports/templates/edit/{?}">
</managed-list>
</section>
<section v-else-if="$route.params.tab == 'snippets'">
<h2>Snippets</h2>
<managed-list
:imports-disabled="true"
prop-delete-endpoint="ReportTemplate/delete"
prop-resource-url="ReportTemplate"
:prop-fetch-url="'ReportTemplate/filter?filters='+snippetFilter"
prop-edit-action="/reports/templates/edit/{?}">
</managed-list>
</section>
</div>
</template>
<script>
import ManagedList from "./ManagedList"
import bus from '../bus.js'
export default {
name: 'ReportTemplates',
components: {
ManagedList
},
data() {
return {
snippetFilter : JSON.stringify([
["is_snippet","=", 1]
]),
reportFilter : JSON.stringify([
["is_snippet","=", 0]
])
}
},
created() {
console.log(this.snippetFilter, this.reportFilter)
}
}
</script>
정확히 내가 필요한 것 ... 자세한 설명 주셔서 감사합니다! – user3246127