You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue.js 2.0中v-for渲染完成后触发第三方脚本的方案咨询

解决Vue.js 2.0中v-for渲染完成后触发第三方脚本的问题

针对你遇到的b-tabs标签页2中v-for渲染异步数据后,需要准确触发Altmetric徽章初始化脚本的问题,可以通过以下步骤解决:

核心思路

利用Vue的$nextTick方法确保DOM渲染完成后执行第三方函数,同时结合b-tabs的切换事件,仅在目标标签页激活且数据就绪时触发,避免无效调用和时序问题。

具体实现步骤

1. 监听标签页切换事件

在b-tabs组件上绑定change事件,监听标签页切换动作:

<b-tabs @change="handleTabChange" ref="tabs">
  <b-tab title="标签页1" id="tab1">
    <!-- 标签页1内容,包含触发数据请求的操作 -->
  </b-tab>
  <b-tab title="标签页2" id="tab2">
    <div class="person-info" v-for="obj in publicationData" :key="obj.pmid" :data-pmid="obj.pmid">
      <div>
        <div class='altmetric-embed' 
             data-badge-type='donut' 
             :data-pmid="obj.pmid" 
             data-link-target='_blank' 
             data-badge-popover='bottom'>
        </div>
      </div>
    </div>
  </b-tab>
</b-tabs>

2. 处理数据请求与徽章初始化

在数据请求完成后,判断当前是否处于标签页2,若是则通过$nextTick触发徽章初始化;同时在标签页切换到目标页时,若数据已加载也执行初始化:

export default {
  data() {
    return {
      publicationData: [],
      new_researchers: []
    };
  },
  methods: {
    fetchPublicationData() {
      const self = this;
      axios.get(`https://wwwwwwwww.azurewebsites.net/api/formattedpubs/${self.new_researchers[0].PMIDS}`)
        .then(res => {
          self.publicationData = res.data.New_Publications;
          // 若当前已在标签页2,DOM更新后初始化徽章
          if (this.$refs.tabs.activeId === 'tab2') {
            this.$nextTick(() => {
              window._altmetric_embed_init?.();
            });
          }
        });
    },
    handleTabChange(tabId) {
      // 切换到标签页2且数据已加载时,初始化徽章
      if (tabId === 'tab2' && this.publicationData.length > 0) {
        this.$nextTick(() => {
          window._altmetric_embed_init?.();
        });
      }
    }
  }
};

关键说明

  • $nextTick:Vue会在DOM更新完成后执行该方法的回调,确保v-for渲染的所有元素已挂载到DOM中,此时调用第三方脚本才能正确识别新添加的徽章容器。
  • 标签页切换监听:避免在页面初始化或其他标签页加载时无效调用脚本,仅在用户切换到目标页且数据就绪时触发。
  • 避免无限循环:之前使用$forceUpdate导致循环是因为在渲染函数相关逻辑中触发了更新,此方案完全避开了这种错误用法。

内容的提问来源于stack exchange,提问作者Bill

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 15:12:49