Vue中是否有一个事件在元素重新渲染后被触发?我有一个更新的对象,这会导致我的模板更新。更新后,我想触发一个运行jQuery函数的事件。代码如下所示:
template: `
<div class="undo-margin">
<div class="gradient">
<img v-bind:src="blogPost.thumbnail"/>
<h1 class="align-bottom">{{blogPost.title}}</h1>
</div>
<div class="container bg-faded">
<article v-html="blogPost.article"></article>
</div>
</div>
`,
props: ["blogid"],
data: function () {
return blogPageData;
},
mounted: function () {
const blogid = jQuery("#blogPage").attr("blogid");
if (this.authdata.roles.indexOf("Administrator") !== -1) {
this.isAdmin = true;
}
this.getBlogPost(blogid);
},
methods: {
getBlogPost: function (blogid) {
var element = this;
$.ajax({
url: `/api/blog/${blogid}`,
type: "get",
headers: headers,
success: function (data) {
if (data === undefined) {
window.location.replace("/blog");
} else {
element.isDetails = true;
element.blogPost = data;
}
},
error: function (data) {
window.location.replace("/blog");
errorData.error = data.responseText;
}
});
}
},
watch: {
blogPost: function () {
console.log(this.blogPost);
jQuery("pre").each((i, e) => {
hljs.highlightBlock(e);
});
}
}
如您所见,我尝试使用监视事件,但是当监视事件触发时,我的页面尚未更新。但是blogPost已被更改,但vue仍在渲染页面。我知道理论上我可以通过添加一个setTimeout来修复它,但我更喜欢更清洁的东西。
答案 0 :(得分:39)
updated
可能是您正在寻找的内容。 https://vuejs.org/v2/api/#updated
答案 1 :(得分:8)
updated()应该是您正在寻找的内容:
数据更改后调用会导致重新呈现和修补虚拟DOM。
调用此挂钩时,组件的DOM将会更新,因此您可以在此处执行与DOM相关的操作。