Связывание строки в таблице с URL

Я работаю над компонентом vue, который реализует vue-tables-2. У меня есть рабочий пример здесь. То, что я пытаюсь сделать, это связать URL-адрес редактирования href со всей строкой, а не только с ячейкой редактирования. Используя ванильный JavaScript, я попытался использовать mounted крюк (this.$el) получить доступ к виртуальному домену и обернуть строку в href и скрыть столбец редактирования, хотя, это похоже на хак. Любые предложения о том, как это сделать?

  <template>
    <div class="col-md-8 col-md-offset-2">
        <div id="people">
            <v-client-table :data="tableData" :columns="columns">
                <template slot="edit" slot-scope="props">
                   <div>
                        <a class="fa fa-edit" :href="edit(props.row.id)">thing</a>
                    </div>
                </template>
            </v-client-table>
        </div>
    </div>
</template>

<script>
    import {ServerTable, ClientTable, Event} from 'vue-tables-2';
    import Vue from 'vue';
    import axios from 'axios';

    export default {
        methods: {
          edit: function(id){
                        return "edit/hello-" + id
          }
        },
        data() {
            return {
                columns: ['edit', 'id','name','age'],
                tableData: [
                    {id:1, name:"John",age:"20"},
                    {id:2, name:"Jane",age:"24"},
                    {id:3, name:"Susan",age:"16"},
                    {id:4, name:"Chris",age:"55"},
                    {id:5, name:"Dan",age:"40"}
                ]
            };
        }
    }
</script>

1 ответ

Решение

Компонент таблицы испускает row-click событие, которое вы можете слушать. Это дает вам строку, которая была нажата. Я предлагаю вместо того, чтобы пытаться использовать ссылку, вы слушаете событие и перемещаетесь туда, куда хотите.

Вот обновленный шаблон.

<v-client-table :data="tableData" :columns="columns" @row-click="onRowClick">

И в методе:

onRowClick(event){
  window.location.href = `/edit/hello-${event.row.id}`
}

Пример.

Другие вопросы по тегам