javascript - 如何在 Bootstrap 选项卡中创建多个 Vue 组件?

标签 javascript vue-component vue-resource vue.js

我正在使用togglable tabs Bootstrap 中的组件。我想要每个选项卡中都有一个表格。每个都显示一个电子邮件日志表(点击事件、打开事件等)。我还希望每个表仅在用户单击该选项卡时才使用 Vue 资源动态加载,并且资源/组件仅加载一次(一旦我们从 AJAX 获得数据,就不要刷新它)。

我该如何设置?我目前有一个 email-table 组件和一个 email-table-template 模板来呈现表格,但我不确定如何设置它们以在用户单击选项卡,并且仅调用 AJAX 一次。

An illustration of the task

这是我当前用于检测选项卡开关和更新 Vue 组件的代码:

$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
var email_event = $(e.target).data('email-event');
switch(email_event) {
  case 'click':
    createClick();
    break;
  // rest of the cases
}

function createClick() {
var click_events = Vue.resource('/api/email_logs/click_events');

click_events.get().then((response) => {
  new Vue({
    el: '#table-click',
    data: {
      searchQuery: '',
      gridColumns: ['campaign_id', 'target_link_name', 'target_link_url', 'created_at'],
      gridData: response.body
    }
  })
});

任何见解都值得赞赏。非常感谢!

最佳答案

如果你只想调用一个方法一次,你可以使用监听和发出事件。

vm.$oncevm.$emit 应该可以解决问题。

官方文档 https://v2.vuejs.org/v2/api/#vm-once

这是一个简单的例子 https://jsfiddle.net/leocoder/s1nfsao7/4/

关于javascript - 如何在 Bootstrap 选项卡中创建多个 Vue 组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40734238/

相关文章:

vuejs2 - 如何在 vue-resource http 拦截器中重定向用户?

javascript - 如何隐藏视差溢出?

javascript - Phaser 3 街机 : Setting Y of camera following player to fixed

javascript - 有没有一种更简洁的方法可以将方法绑定(bind)到 Javascript 中的对象?

javascript - 如何使用 vue.js 2 提交表单?

javascript - 如何在尚未评估变量的情况下将变量传递给自定义组件?

vue.js - Vuetify - 单击时显示工具提示

vue.js - 如何添加额外的 header 以使用 vue-resource 发布请求?

javascript - vue-resource root 和授权的配置

javascript - 运行函数直到变量达到特定值