VueJSコンポーネント<managed-list>
があります。これは同じテンプレートで2回使用して2つの異なるデータセット。それぞれは、独自の<section>
コンテナに表示されます。このコンテナは、nav-tabのv-if
を使用して切り替えられます。vue 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