【发布时间】:2018-11-08 09:36:42
【问题描述】:
我有一个组件,它有一个名为 rows 的数据属性,用于填充动态表(我使用的是 Datatables)。 我有一个名为 clientLeads 的计算属性,用于加载存储数据。 我有一个监视函数来监视 clientLeads 计算属性并更新 rows 数据属性。
我想使用 router-link 组件创建一个指向个人资料页面的 Vue JS 路由器链接。
这是 Datatables 组件(src:https://codepen.io/stwilson/pen/oBRePd):
<script>
import 'datatables.net-bs4'
import jQuery from 'jquery'
export default {
template: '<table class="table table-striped dt-responsive nowrap" style="width:100%"></table>',
props: {
headers: {
default () {
return {}
}
},
rows: {
default () {
return []
}
}
},
data () {
return {
dTHandle: null
}
},
watch: {
rows (val, oldVal) {
let vm = this
vm.dtHandle.clear()
vm.dtHandle.rows.add(vm.rows)
vm.dtHandle.draw()
}
},
mounted () {
let vm = this
vm.dtHandle = jQuery(this.$el).DataTable({
classes: {
sWrapper: 'dataTables_wrapper dt-bootstrap4'
},
columns: vm.headers,
data: vm.rows,
searching: false,
paging: false,
info: true,
responsive: {
details: {
type: 'column'
}
}
})
}
}
</script>
这是我的视图组件:
<template>
<div>
<data-tables :headers="headers" :rows="rows" />
</div>
</template>
<script>
import { mapGetters } from 'vuex'
export default {
data () {
return {
headers: [
{ title: 'Name' },
{ title: ' ' }
],
rows: []
}
},
computed: mapGetters({
clientLeads: 'clientLeads'
}),
watch: {
clientLeads (val, oldVal) {
let vm = this
let rows = []
val.forEach(function (item) {
let row = []
row.push(item.name)
row.push('<router-link to="/lead_details/' + item.id + '"><a><i class="fa fa-eye"></i></a></router-link>')
rows.push(row)
})
vm.rows = rows
}
},
created () {
// get leads
this.$store.dispatch('getClientLeads', {
status: this.status
})
}
}
</script>
但是,生成的 html 是:
<router-link to="/lead_details/123"><a><i class="fa fa-eye"></i></a></router-link>
...而不是:
<a href="/lead_details/123"><i class="fa fa-eye"></i></a>
我了解原因,但无法找到解决我的问题的解决方法。
【问题讨论】:
-
你的表格 html 是什么样的?
-
它是由数据表组件动态构建的。您是在问结果表应该是什么样子?
-
我不知道这个
datatables组件,但通常在这种情况下,您只需将路由 url 推送到行数据中,然后使用组件模板中的插槽为特定列定义模板或单元格(取决于数据表组件的实现)。如果您提供 jsfiddle,也许我们可以寻找解决方案。 -
@budgw - 数据表组件是基于 Will Vincent (codepen.io/stwilson/pen/oBRePd) 工作的自定义组件。我多年来一直在使用 DataTables (datatables.net),并且更喜欢继续使用它。我已经用非常简单的数据表组件的源代码更新了我的问题,希望它能帮助您更好地理解。
标签: javascript vuejs2 vue-component vue-router