VUE - 在 v-for 完成循环后调用一个函数
VUE - Call a function after v-for has done looping
这是我在v-for循环后调用方法的做法。它工作得很好,但我仍然想知道是否有比这更好的方法,或者 vue 是否提供类似 v-for 回调的方法。
父组件
<template>
<loader-component v-show="show_loader" />
<list-component @onRendered="hideLoader"/>
</template>
<script>
export default {
components: {
loaderComponent,
listComponent
},
data() {
return {
show_loader: true
}
}
methods: {
hideLoader() {
this.show_loader = false;
}
}
}
</script>
列表组件
<template>
<item-component v-for="(item, key) in items" :isRendered="isRendered(key)" />
</template>
<script>
export default {
prop: ['items'],
methods: {
isRendered(key) {
let total_items = this.items.length - 1;
if (key === total_items) {
this.$emit('onRendered');
}
}
}
}
</script>
我认为对 Vue 更新其响应式属性的确切方式存在误解。
我为您制作了一个小演示,希望它能解决问题。
https://codesandbox.io/s/prod-star-pzjhc
我还建议阅读 Vue 文档 computed properties
这是我在v-for循环后调用方法的做法。它工作得很好,但我仍然想知道是否有比这更好的方法,或者 vue 是否提供类似 v-for 回调的方法。 父组件
<template>
<loader-component v-show="show_loader" />
<list-component @onRendered="hideLoader"/>
</template>
<script>
export default {
components: {
loaderComponent,
listComponent
},
data() {
return {
show_loader: true
}
}
methods: {
hideLoader() {
this.show_loader = false;
}
}
}
</script>
列表组件
<template>
<item-component v-for="(item, key) in items" :isRendered="isRendered(key)" />
</template>
<script>
export default {
prop: ['items'],
methods: {
isRendered(key) {
let total_items = this.items.length - 1;
if (key === total_items) {
this.$emit('onRendered');
}
}
}
}
</script>
我认为对 Vue 更新其响应式属性的确切方式存在误解。
我为您制作了一个小演示,希望它能解决问题。
https://codesandbox.io/s/prod-star-pzjhc
我还建议阅读 Vue 文档 computed properties