如何在同一类型的两个组件之间切换时执行功能?
问题:我有几个需要显示不同数据的地图和图表组件。从地图切换到图表组件时,mounted/nextTick
函数按预期运行。当从一个地图切换到另一个地图时,mounted/nextTick
函数不会运行,导致vue的模型反映当前地图的变化,但DOM仍显示前一个元素。
另一个例子:更一般地说,假设我有组件A和B.用户创建A1,A2和B1。当用户在A和B类型的任何组件((A1 || A2)&& B1)之间切换时,mounted/nextTick
函数按预期运行。当用户显示组件A1并切换到A2时,DOM继续显示A1的数据。
问题:如何让DOM反映从一个组件到同一类型的另一个组件的更改?
示例:
<side-bar></side-bar> <!-- List of elements to choose from (ex: map1, map2, graph1)-->
<template> <!-- The element to be shown with different data depending on which element was clicked -->
<map v-if="active[0].type == 'map'" :data="changes"></map>
<graph v-if="active[0].type == 'graph'" :data="changes"></graph>
</template>
答案 0 :(得分:0)
如果你使用vue-router,那么你可以使用afterEach函数:
router.afterEach( ( to, from ) => {
setTimeout( () => {
document.body.scrollTop = 0;
}, 100 );
} );
您可在此处找到完整示例:https://github.com/tstabla/Vue.js-starter
答案 1 :(得分:0)
<template v-for="item in items">
<custom-element :key="something.unique" />
</template>
这将允许交换相同自定义组件的多个实例,而不会将其视为允许mounted/nextTick()
函数每次运行的同一对象。