javascript - 渲染后的 Vue 组件事件

标签 javascript jquery vuejs2

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 来解决这个问题,但我更喜欢更干净的东西。

最佳答案

更新可能就是您正在寻找的内容。

Vue2 https://v2.vuejs.org/v2/api/#updated

编辑:现在 Vue3 是当前版本,这里是相关生命周期 Hook 的链接。

Vue3 组合 API https://vuejs.org/api/composition-api-lifecycle.html#onupdated

Vue3 选项 API https://vuejs.org/api/options-lifecycle.html#updated

关于javascript - 渲染后的 Vue 组件事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44659277/

相关文章:

从 Vuejs 文件中的 webpack 导入 Velocity

select - 如何将 bootstrap-vue-select 控件的值设置为在表单加载时预选?

javascript - 如何在 TypeScript 中为函数包装器添加类型?

Javascript 数组相等失败

javascript - 调整大小需要刷新

javascript - 在 Angular Bootstrap 之后添加 Angular 属性

javascript - Javascript 中可能会跳过带有 IF ELSE 的代码块的原因

javascript - 如何将 jquery/javascript 验证转换为 PHP

javascript - 数据推送到数组后切换表中的行 |维埃

Javascript 书签在 Firefox 中输出 'true' 而不是执行脚本