[英]Vue.js: Cannot trigger ready of a component when only a param of route change
[英]Vue.js Router: Run code when component is ready
我正在使用 Vue.js 及其官方路由器開發單頁應用程序。
我使用路由器加載的每個部分都有一個菜單和一個組件(.vue 文件)。 在每個組件中,我都有一些與此類似的代碼:
<template>
<div> <!-- MY DOM --> </div>
</template>
<script>
export default {
data () {},
methods: {},
route: {
activate() {},
},
ready: function(){}
}
</script>
我想在組件完成轉換后執行一段代碼(初始化一個 jQuery 插件)。如果我在ready
事件中添加我的代碼,它只會在組件第一次加載時被觸發。 如果我在route.activate
添加我的代碼,它每次都會運行,這很好,但 DOM 尚未加載,因此無法初始化我的 jQuery 插件。
每次組件完成轉換並且其 DOM 准備就緒時,我如何運行我的代碼?
當您使用 Vue.js Router 時,這意味着每次轉換到新路由時,Vue.js 都需要更新 DOM。 默認情況下,Vue.js 異步執行 DOM 更新。
為了等到 Vue.js 完成更新 DOM,您可以使用 Vue.nextTick(callback)。 DOM 更新后將調用回調。
在您的情況下,您可以嘗試:
route: {
activate() {
this.$nextTick(function () {
// => 'DOM loaded and ready'
})
}
}
欲了解更多信息:
你可以使用
mounted(){
// jquery code
}
我正在使用Vue.js及其官方路由器開發單頁應用程序。
我使用路由器加載的每個部分都有一個菜單和一個組件(.vue文件)。 在每個組件中,我都有一些類似於以下的代碼:
<template>
<div> <!-- MY DOM --> </div>
</template>
<script>
export default {
data () {},
methods: {},
route: {
activate() {},
},
ready: function(){}
}
</script>
組件完成轉換后,我想執行一段代碼(初始化jQuery插件)。如果我將代碼添加到ready
事件中,則僅在第一次加載組件時才會觸發該代碼。 如果我在route.activate
添加代碼,那么route.activate
都會運行它,這很好,但是尚未加載DOM,因此無法初始化我的jQuery插件。
每當組件完成轉換並准備好DOM時,如何運行我的代碼?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.