【VUE】使用Table组件进行数据双向绑定

写在前面的

   由于SIMATIC内部的框架有很多,前后端自成一家。不过前端大部分还是使用了vue。以前也听说过.NET版本的前后端分离,但也仅仅局限于听说,这次可是亲身体会到了,对比JAVA,我只能说。。。扎心了老铁们。虽然.NET有微软天生的优势,但是有时候也会捉襟见肘,在只有ASP.NET WEB SERVICE规范和基础框架以及在不使用WCF核心的情况下,框架的效率就要比JAVA的各种框架低很多了。多说无益,还是继续来分享Table组件吧。

iView

   首先,需要了解一下什么是iView。它是一套基于 Vue.js 的高质量 UI 组件库,这里需要补充一点,由于ANGULAR2的组件库虽然非常的强大,但是在学习路线的长度上,iView还是有着不少优势的,总的来说,就是比较好上手,也是非常稳定和好用。
   如果有兴趣的小伙伴可以参考iView的官网进行初步的学习:戳这里去官网

Tables

基础表格

  • 首先我们来看一下最最基础的表格。
    基础表格
<!--表格模板-->
<template>
    <!--:columns来进行表格表头的绑定,即每列显示什么内容;:data来进行数据的绑定,即,表格中所对应的每列的数据是什么-->
    <Table :columns="columns1" :data="data1"></Table>
</template>
<script>
    export default {
        data () {
            return {
            //在脚本中,我们在表格中定义的数据和表头都需要在这里进行绑定,下面是一些假数据,其中Columns1中的title表示列明,key表示K-V中的标识
                columns1: [
                    {
                        title: 'Name',
                        key: 'name'
                    },
                    {
                        title: 'Age',
                        key: 'age'
                    },
                    {
                        title: 'Address',
                        key: 'address'
                    }
                ],
                //接下来绑定数据,分别对应前面的列的key值来进行数据绑定
                data1: [
                    {
                        name: 'John Brown',
                        age: 18,
                        address: 'New York No. 1 Lake Park',
                        date: '2016-10-03'
                    },
                    {
                        name: 'Jim Green',
                        age: 24,
                        address: 'London No. 1 Lake Park',
                        date: '2016-10-01'
                    },
                    {
                        name: 'Joe Black',
                        age: 30,
                        address: 'Sydney No. 1 Lake Park',
                        date: '2016-10-02'
                    },
                    {
                        name: 'Jon Snow',
                        age: 26,
                        address: 'Ottawa No. 2 Lake Park',
                        date: '2016-10-04'
                    }
                ]
            }
        }
    }
</script>

双向数据绑定

  • 接下来就是对表格中的数据进行双向绑定了,过程很简单,使用axios向服务器发送请求然后接受返回值即可。
<!--关于表格的属性官方介绍中都包含,请自行参考-->
<!--:columns所对应的是script中的columnsdata,:data对应脚本中声明的data-->
<Table height="400"  size="small" :columns="columnsdata" :stripe="true" :data="data" border ></Table>

<script>
export default {
        data () {
            return {
                columnsdata: [
                    {
                        title: 'Name',
                        key: 'name'
                    },
                    {
                        title: 'Age',
                        key: 'age'
                    },
                    {
                        title: 'Address',
                        key: 'address'
                    }
                ],
                //声明一个data,用来存储服务返回的数据值
                 data:[]
 }


 methods: {

    querytable(){
      axios.post("这里输入请求地址", "这里输入所需要向后台传递的对象参数,没有也可以不写")//post也可以改成get,但需要对应服务端的请求方法
          .then(function (response) {
          //将返回的数据存入页面中声明的data中
            this.data = response.data;
          })
          .catch(function (error) {
            alert(error);
          });
  },
  //当页面加载的时候执行
     created () {
        querytable();
    }
 }
 </script>

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
以下是一个使用Bootstrap中的分页示例,配合Vue.js实现双向绑定数据: HTML代码: ``` <div id="app"> <table class="table table-striped table-bordered"> <thead> <tr> <th>ID</th> <th>Name</th> <th>Age</th> </tr> </thead> <tbody> <tr v-for="item in pagedItems"> <td>{{ item.id }}</td> <td>{{ item.name }}</td> <td>{{ item.age }}</td> </tr> </tbody> </table> <nav aria-label="Page navigation example"> <ul class="pagination"> <li class="page-item" :class="{ 'disabled': currentPage <= 1 }"> <a class="page-link" href="#" aria-label="Previous" @click.prevent="changePage(currentPage - 1)"> <span aria-hidden="true">«</span> </a> </li> <li class="page-item" v-for="pageNumber in pages" :key="pageNumber" :class="{ 'active': currentPage === pageNumber }"> <a class="page-link" href="#" @click.prevent="changePage(pageNumber)">{{ pageNumber }}</a> </li> <li class="page-item" :class="{ 'disabled': currentPage >= totalPages }"> <a class="page-link" href="#" aria-label="Next" @click.prevent="changePage(currentPage + 1)"> <span aria-hidden="true">»</span> </a> </li> </ul> </nav> </div> ``` JavaScript代码: ``` new Vue({ el: '#app', data: { items: [ { id: 1, name: 'Alice', age: 20 }, { id: 2, name: 'Bob', age: 25 }, { id: 3, name: 'Charlie', age: 30 }, { id: 4, name: 'David', age: 35 }, { id: 5, name: 'Eva', age: 40 }, { id: 6, name: 'Frank', age: 45 }, { id: 7, name: 'Grace', age: 50 }, { id: 8, name: 'Henry', age: 55 }, { id: 9, name: 'Ivy', age: 60 }, { id: 10, name: 'John', age: 65 } ], pageSize: 3, currentPage: 1 }, computed: { totalPages() { return Math.ceil(this.items.length / this.pageSize); }, pages() { const range = (start, end) => { const length = end - start + 1; return Array.from({ length }, (_, i) => start + i); }; if (this.totalPages <= 9) { return range(1, this.totalPages); } let startPage = Math.max(1, this.currentPage - 4); let endPage = Math.min(this.totalPages, this.currentPage + 4); if (startPage === 1) { return range(1, 9); } if (endPage === this.totalPages) { return range(this.totalPages - 8, this.totalPages); } return range(startPage, endPage); }, pagedItems() { const startIndex = (this.currentPage - 1) * this.pageSize; return this.items.slice(startIndex, startIndex + this.pageSize); } }, methods: { changePage(pageNumber) { this.currentPage = pageNumber; } } }); ``` 在这个示例中,我们使用了`v-for`指令来遍历数据使用`computed`属性来计算页码和分页后的数据使用`methods`方法来处理分页切换。同时,我们使用了Bootstrap中的分页组件来显示分页导航。通过Vue.js双向绑定数据,我们可以很方便地实现分页功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值