我是Vue.js和DataTable的新手,我希望你们中的一些人有他们整合的经验.
有人可以肯定地说它是整合Vue.js& amp; DataTable(
jquery插件)?它的工作正常,但我想确定它是正确的方式……
谢谢 :)
var app = new Vue({
el: '#root',
data(){
return{
employees: [
{
Name: 'Tiger Nixon',
Position: 'System Architect',
Office: 'tokyo',
Age: '61',
StartDate: '2011/04/25',
Salary: '$320,800',
},
],
name: '',
position: '',
office: '',
age: '',
startDate: '',
salary: '',
dataTable: null
}
},
methods: {
addEmployee(){
this.dataTable.row.add([
this.name,
this.position,
this.office,
this.age,
this.startDate,
this.salary,
]).draw(false);
}
},
mounted(){
this.dataTable = $('#data_table').DataTable({
});
}
})
#root{
text-align: center;
}
.btn{
margin-bottom: 30px;
}
<div id="root" class="container">
<form class="form-inline">
<div class="form-group">
<label for="name">Name:</label><br>
<input type="text" v-model="name" class="form-control" id="name">
</div>
<div class="form-group">
<label for="position">Position</label><br>
<input type="text" v-model="position" class="form-control" id="position">
</div>
<div class="form-group">
<label for="office">Office</label><br>
<input type="text" v-model="office" class="form-control" id="office">
</div>
<div class="form-group">
<label for="age">Age</label><br>
<input type="text" v-model="age" class="form-control" id="age">
</div>
<div class="form-group">
<label for="Start_date">Start Date</label><br>
<input type="text" v-model="startDate" class="form-control" id="start_date">
</div>
<div class="form-group">
<label for="salary">Salary</label><br>
<input type="text" v-model="salary" class="form-control" id="salary">
</div><br><br>
<button type="button" @click="addEmployee" class="btn btn-primary">Submit</button>
</form>
<table id="data_table" class="display" cellspacing="0" width="100%">
<thead>
<tr>
<th>Name</th>
<th>Position</th>
<th>Office</th>
<th>Age</th>
<th>Start Date</th>
<th>Salary</th>
</tr>
</thead>
<tbody>
<tr v-for="employee in employees">
<td>{{ employee.Name }}</td>
<td>{{ employee.Position }}</td>
<td>{{ employee.Office }}</td>
<td>{{ employee.Age }}</td>
<td>{{ employee.StartDate }}</td>
<td>{{ employee.Salary }}</td>
</tr>
</tbody>
</table>
</div>
<link rel="stylesheet" type="text/css" href="//cdn.datatables.net/1.10.13/css/jquery.dataTables.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script type="text/javascript" charset="utf8" src="//cdn.datatables.net/1.10.13/js/jquery.dataTables.js"></script>
<script src="https://unpkg.com/vue@2.1.8/dist/vue.js"></script>
最佳答案 我更喜欢用vuejs表的替代品.
其中一个是来自ratiw的组件
https://github.com/ratiw/vuetable-2-tutorial/blob/master/doc/README.md
很快开始并轻松地与bootstrap或语义ui框架集成.还有非常好的可自定义排序字段和搜索以及从api获取数据,但该部分需要来自api的特定数据响应格式,除非你没有太多控制权,例如实现分页更难.
另一个选项是https://github.com/matfish2/vue-tables-2.我发现这个更难开始,因为它需要一些jsx设置,但它的结构比上面的第一个更好.
更新:vue-tables-2现在提供预编译,不需要任何转换或加载器
老实说,我更喜欢上面的一个选项,或者如果你在awesome-vue(github上的vue组件列表)中找到另一个组件形式的选项.
通过使用这样的自定义组件,您可以摆脱2个库(jquery和datatables),并且它们可以很好地发挥vue的反应性.
除非你不需要pdf导出,样式表导出或花哨的打印东西,否则我不明白为什么你应该使用数据表.