使用 Vue Router 增强数据表
P粉818088880
P粉818088880 2024-03-27 22:03:12
[Vue.js讨论组]

我正在尝试向 DataTable 中的行添加链接/按钮,单击后会将您带到 vue 路线。当然,我可以简单地添加一个普通的 链接,其中包含 href="/item/${id}"。但这会绕过路由器并导致整个页面重新加载

我想出了两个解决方案,这两个解决方案都依赖于设置 onclick 来执行一些代码:

  1. route1中,我将一个名为vueRoute的函数附加到window对象,该函数只是对vue方法route1的引用。现在可以从任何地方调用此函数

  2. route2 中,我让 onclick 触发 CustomEvent,并且我设置了一个事件侦听器以由 route2 vue 方法处理它

我对这两种解决方案都不满意。尽管它们有效,但它们看起来很“hacky”。我应该做什么?

// datatables column definitions
columns: [
  // route1
  {
      data: 'id',
      render: function (dt) {
          return `route1`;
      },
  },
  // route2
  {
    data: 'id',
    render: function (dt) {
        return `route2`;
    },
  },
],

// vue methods
methods: {
  route1(id) {
    this.router.push('/item/' + id);
  },

  route2(evt) {
    this.router.push('/item/' + evt.detail);
  },
},

// on mount, set up route1 and route2
mounted() {
  window.vueRoute = this.route1;

  document.body.addEventListener('clickedEdit', this.route2);
},

可以在此处找到工作示例:https://stackblitz.com/edit/datatables-net-vue3-simple-mgdhf1?file=src/components/ListView.vue

编辑:我实际上最终做的是切换到无头表组件(TanStack),它在 Vue 中运行得比 DataTables 更好。但如果您需要使用 DataTables,@Damzaky 和 ​​@Moritz Ringler 下面发布的解决方案可以正常工作

P粉818088880
P粉818088880

全部回复(0)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号