代码之家  ›  专栏  ›  技术社区  ›  live2

如何在Kendo Grid(Vuejs)中使用路由器链接

  •  1
  • live2  · 技术社区  · 6 年前

    如何使用 <router-link to="/detail/1">Details</router-link> 剑道格力? 我想在网格中使用普通链接的标准逻辑,而不需要在单击时重新加载整个页面。我试着用 router-link 在网格内使用模板,但它不起作用。控制台中也没有错误。

    Example on Stackblitz

    2018年10月24日更新

    Kendo Grid for Vue正在为jquery初始化一个简单的Kendo网格小部件。 因此,所有模板都是在运行时计算的,可能的路由不能在之后计算,也不能解析路由器链接元素。

    如果你有同样的问题,请投赞成票 vue native implementation

    1 回复  |  直到 6 年前
        1
  •  0
  •   Padhraic    6 年前

    的确,你不能在剑道模板内使用路由器链接。但我想我会提供另一种方法来达到同样的效果。

    您可以重定向到新页面 using the programmatic way 通过打电话 router.push({ path: /细节/${id} })

    将模板替换为 command 实现了一个click事件,并调用 route.push 从那里开始。

    我已经更新了 your example on slackblitz 举个例子。

    剑道网格与命令列

    <kendo-grid ref="grid"
                :height="550"
                :data-source-ref="'datasource1'"
                :sortable="true">
        <kendo-grid-column :field="'ProductID'"
                           :title="'Product ID'"></kendo-grid-column>
        <kendo-grid-column :field="'ProductName'"
                           :title="'Product Name'"></kendo-grid-column>
        <kendo-grid-column :field="'Link'" :template="linkTemplate1"></kendo-grid-column>
        <kendo-grid-column :command="detailsLink"></kendo-grid-column>
    </kendo-grid>
    

    数据对象中的命令数组。

    new Vue({
        el: '#vueapp',
        router,
        data () {
            return {
              linkTemplate1: "<a href='/detail/#:ProductID#' class='k-button'>Link</a>",
              detailsLink: [{ 
                name: "details",
                click: function(e) {
                  // prevent page scroll position change
                  e.preventDefault();
                  var tr = $(e.target).closest("tr"); // get the current table row (tr)
                  // get the data bound to the current table row
                  var data = this.dataItem(tr);
                  // redirect to new page
                  router.push({ path: `/detail/${data.ProductID}` })
                },// template must include k-grid-[command name]
                template: "<a class='k-button k-grid-details'>TEST</a>"
              }]
            }
        }
    })