Vue.js 路由器:在组件准备就绪时运行代码
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 路由器时,
这意味着每次你转换到新路由时,Vue.js都需要更新 DOM。默认情况下,Vue.js 异步执行 DOM 更新。
为了等到 Vue.js 完成 DOM 的更新,你可以使用 Vue.nextTick(callback)。回调将在 DOM 更新后调用。
在您的情况下,您可以尝试:
route: {
activate() {
this.$nextTick(function () {
// => 'DOM loaded and ready'
})
}
}
欲了解更多信息:
- https://vuejs.org/api/#Vue-nextTick
- https://vuejs.org/guide/reactivity.html#Async-Update-Queue
您可以使用
mounted(){
// jquery code
}
虽然这可能有点晚了...如果我猜对了,当您在路由之间导航时,有问题的组件会保留在页面上。通过这种方式,Vue 重用组件,更改其中需要更改的内容,而不是销毁和重新创建它。Vue 为 Properly trigger lifecycle hooks of a component
提供了一个key
属性。通过更改组件的key
,我们可以指示 Vue 重新渲染它。有关详细信息,请参阅键入指南,有关代码示例,请参阅键入 api。
相关文章:
- 当组件准备就绪时,如何在Polymer中动态注册新属性
- IIFE jquery已准备就绪
- 准备就绪时的随机背景
- Javascript/Css导航未显示在jquery文档上,仅在ie中准备就绪
- 在页面上加载高级jQuery版本准备就绪
- 修改 DOM 后如何确保 DOM 再次准备就绪
- 可以't将属性src设置为null,即使DOM已准备就绪
- 当文档准备就绪时,将数据从一个文本框复制到另一个
- 电话间隙设备准备就绪,5秒钟后未启动
- AngularJS文档准备就绪,无法正常工作
- 只有在文档内部的警报准备就绪后,触发器才能工作
- 确定对象何时准备就绪.我应该使用事件吗
- SVG正在等待文档在javascript中准备就绪
- 在 DOM 准备就绪之前附加类
- 如何检查提供程序以查看 HTTP 数据是否已准备就绪
- 科尔多瓦在从 3.3.0 更新到 3.6.4 后未启动设备准备就绪
- 当数据准备就绪时,React-Rails gem 调用组件
- angularJS:等待ng-if完成,以确保DOM准备就绪
- 使用 jquery 在 django 文档准备就绪时运行代码
- Vue.js 路由器:在组件准备就绪时运行代码