《前端》bootstrapTable-Vue使用记录--2020年9月27日

62 篇文章 0 订阅
14 篇文章 0 订阅

引入文件:

    <script src="./lib/js/jquery-1.11.0.min.js"></script>
    <script src="./lib/js/bootstrap-3.3.7.min.js"></script>
    <script src="./lib/js/bootstrap-table.min.js"></script>
    <script src="https://unpkg.com/bootstrap-table@1.18.0/dist/bootstrap-table-vue.min.js"></script>
    <script src="./lib/js/vue-2.4.0.js"></script>

用法:(充分利用 mounted() {} )

实现功能是在表格中添加按钮,实现触发事件并获取数据。

实现思路:

  •  依旧是table标签,把table标签放到vue的div中
<div id="app">
    <table id="docDateTable" class="table table-hover table-bordered" style="color: #000000">
    </table>
</div>
  • columns(存放table的表头)和data(存放table的数据)放在data里面。
  • 在mounted() {}里写bootstrapTable,格式如下:

mounted() {
        this.$nextTick(() => {
            var $this = this
            $('#docDateTable').bootstrapTable({
                // 其他配置选项
                columns: this.columns,//在这里获取列和数据
                data: this.data,
            });

           // 写dom的触发方法

        })

    },

疑惑1:table里面方法怎么写进去?

在columns里面对应列中写formatter:function(value,row,index){

     // 在里面拼按钮字符串

}

这里有没有封装的方法?

疑惑2:table里面的按钮触发事件怎么写进去?

之前是拼接按钮的时候用onclick事件(如EditViewById()):

result += "<a href='javascript:;' class='btn btn-xs green' οnclick=\"EditViewById('" + rowarr.name + '\',\'' + rowarr.cityname + '\',\'' + id + "')\" title='查看'><span class='glyphicon glyphicon-search'></span></a>";

现在不行,为什么不行?原理的东西还说不太出来、

解决:拼接按钮的时候,利用class或者id 用dom的方式写触发事件。(如红框)。

在 mounted() {} 里面bootstrapTable定义后面写触发方法。

           $(".operateBtn").on('click', function(value, row, index) {

                console.log($(this).attr('data-id'));

                alert($(this).attr('index'))

            })

疑惑3:怎么传值,获取table中的数据。

如黄圈中,通过属性值赋值的方式传值,在方法中通过 $(this).attr('data-id') 获取值。

完整代码示例:

var vm = new Vue({
    el: '#app',
    data: {
        columns: [{
            field: 'name',
            title: '工作令',
        }, {
            field: 'bl',
            title: '备料号',
        }, {
            field: 'operate',
            title: '操作',
            valign: 'middle',
            // formatter: actionFormatter,
            formatter: function(value, row, index) {
                // console.log("这一条记录:" + JSON.stringify(row))
                // console.log("姓名:" + row.name)
                // console.log("所在城市:" + row.cityname)
                var result = "";
                // result += "<button>确定</button>"
                result += "<a href='javascript:;' class='btn btn-xs green operateBtn' index='" + index + "' data-id='" + row.bl + "' title='查看'><span class='glyphicon glyphicon-search'></span></a>";
                return result;
            },
        }],
        data: [{
            "name": "mary",
            "bl": "2324345",
            "XHpici": "女",
            "planPerson": "职称",
            "planNum": "riq",
            "taskName": "citynamedwd",
            "taskPerson": "Item 20",
            "qualityLevel": "$353450",
            "totalDemand": "女",
            "allocatedQuantity": "职称",
        }, {
            "name": "belle",
            "bl": "54534656",
            "XHpici": "",
            "planPerson": "佛山市",
            "planNum": "放的歌",
            "taskName": "vagrant",
            "taskPerson": "分阿尔法",
            "qualityLevel": "33353450",
            "totalDemand": "333",
            "allocatedQuantity": "发发火",
        }],
    },
    watch: {},
    mounted() {
        this.$nextTick(() => {
            var $this = this
            $('#docDateTable').bootstrapTable({
                // url: queryUrl, //请求后台的URL(*)
                method: 'GET', //请求方式(*)
                sortable: false, //是否启用排序
                sortOrder: "asc", //排序方式
                singleSelect: true, //开启单选,想要获取被选中的行数据必须要有该参数
                clickToSelect: true, //是否启用点击选中行
                /* height: 500,                        //行高,如果没有设置height属性,表格自动根据记录条数觉得表格高度 */
                showColumns: true, //是否显示所有的列
                cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
                pagination: true, //是否显示分页(*)
                pageNumber: 1, //初始化加载第一页,默认第一页
                pageSize: 5, //每页的记录行数(*)
                pageList: [10, 25, 50, 100], //可供选择的每页的行数(*)
                //得到查询的参数
                queryParams: function(params) {
                    //这里的键的名字和控制器的变量名必须一直,这边改动,控制器也需要改成一样的
                    var query_params = {
                        rows: params.limit, //页面大小
                        page: (params.offset / params.limit) + 1, //页码
                        sort: params.sort, //排序列名
                        sortOrder: params.order, //排位命令(desc,asc)

                        //查询框中的参数传递给后台
                        search_kw: $('#search-keyword').val(), // 请求时向服务端传递的参数
                    };
                    return query_params;
                },
                columns: this.columns,
                data: this.data,
            });
            $(".operateBtn").on('click', function(value, row, index) {
                // console.log($(this))
                console.log($(this).attr('data-id'));
                alert($(this).attr('index'))
            })
        })

    },
    methods: {},
});
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值