首页 > 语言 > JavaScript > 正文

使用vue的v-for生成table并给table加上序号的实例代码

2024-05-06 15:25:08
字体:
来源:转载
供稿:网友

现在有一个使用mybatis的分页插件生成的table,table中数据是通过vue获得的 , 前台显示使用<tr v-for="item in items">

后台vue获取数据使用分页插件进行查询然后使用回调,将结果返回给vue的一个model

/** * 分页控件加载 * @param data */function aspnetPagerInfoIM(pageDataShow,pageModule,resource, modelCallBack) {  var pageDataShow = $("#"+pageDataShow);  var pageModule = $("#"+pageModule);  pageDataShow.empty();  pageModule.empty();  resource.get({    page: '0'  }).then(function(response){    initLaypage(pageDataShow,pageModule,response.data, resource, modelCallBack);    modelCallBack(response.data.content);  })}/** * 初始化分页组件 * @param page 查询出来的数据包括分页信息 * @param resource vue的resource对象 * @param modelCallBack 每次页面跳转回调方法 modelCallBack(response.data.content) */function initLaypage(pageDataShow,pageModule,page, resource, modelCallBack) {  var singleInvoke = false  laypage({    cont : pageModule,    pages : page.totalPages, //总页数    skin : '#fff', //加载内置皮肤    skip: true,    //是否开启跳页    groups : 5,    //连续显示分页数    hash : true,   //开启hash    jump : function(obj) {      if(!singleInvoke) {        singleInvoke = true;      }else {        resource.get({          page: obj.curr -1        }).then(function(response){          modelCallBack(response.data.content);        })      }      pageDataShow.empty();      if(page.totalElements>0){        $("<p>共"+page.totalElements+"条记录,"          +"每页"+page.size+"条,"          +"当前第 "+obj.curr +"/"+page.totalPages+"页"          +"</p>").appendTo(pageDataShow);      }    }  });}

需求是:给生成的table添加序号

刚开始使用js的函数

function rownum(){  //首先拿到table中tr的数量 得到一共多少条数据  var len = $("#tableId table tbody tr").length;  //使用循环给每条数据加上序号  for(var i = 1;i<len+1;i++){    $('#tableId table tr:eq('+i+') span:first').text(i);  }}

将上面的方法放在点击生成table的事件上 , 可以显示序号,接着点击分页的下一页或者页数,跳转到下一页的时候,序号消失了,

很自然的想到在点击下一页后也应该有添加序号的操作,于是找到显示下一页数据的方法,加上上面的js方法,结果没有生效,

个人觉得是查出数据后rownum方法在dom没刷新前进行了添加,然后dom更新后,序号消失了

通过查找资料最终像下面这样使用解决了问题 , 在每个出现分页查询的地方都加上 Vue.nextTick(function(){})方法

var model={object[]}spnetPagerInfoIM(electricalPageDataShow, electricalPageModule, electricalResource, function(result) {  model.object = result;  Vue.nextTick(function(){    rownum();  });});            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选