美文网首页
handsontable基础使用

handsontable基础使用

作者: 念_桑 | 来源:发表于2020-05-11 23:42 被阅读0次

Handsontable是一款很接近excel的前端表格插件。本文记录了在vue项目中使用Handsontable插件的一些经验~

在Vue中使用Handsontable

在Vue中使用Handsontable有两种方式:

//第一种方式
<hot-table :settings="secondColumnSettings" :data="hotData"></hot-table>


//第二种方式
<hot-table :data="hotData" :settings="secondColumnSettings">
  <hot-column title="First column header">
  </hot-column>
  <hot-column title="seconed">
  </hot-column>
</hot-table>

第二种方式使用时,title不能为数字类型的0。

我个人在使用第二种方式时,当数据hotTable变化时,视图会有问题。但第一种方式视图会跟随数据正常改变。

readOnly只读属性

有3种设置不同的只读属性的方式:

  • 整个表格只读:在settings对象设置readOnly属性为true即可
  • 指定列只读。这种对于不固定列数情况设置不太友好
columns: [{
    readOnly: true
}]
  • 指定行或者单元格只读
cells: function (row, col, prop) {
    var cellSet = {};
    // 指定第一行只读
    if (row == 0) {
        cellSet.readOnly = true;
    } else if (row == 1 && col == 1) {
        //指定单元格只读
        cellSet.readOnly = true;
    }
    return cellSet;
},

beforeChange

beforeChange在更改一个或多个单元格之前触发。该方法返回两个参数。

第一个参数是一个2维数组,外层表示修改的所有单元格数据。内层表示[row(行),column(列),oldVal(原始值),newVal(更改后的值)]这4个公共属性,row和column从0开始。第二个参数是被改变的资源的名称。

Handsontable.hooks.add("beforeChange",function (result, source) {
    //可以在该方法校验输入数据的格式
    
})

若数据格式校验不合格,需要撤销更改。撤销的方法有4种:

Handsontable.hooks.add("beforeChange",function (result, source) {
    let len = result.length;
    for (let i = 0; i < len; i++) {
        //1.指定项置为Null,或使用changes.splice(i,1)将其从数组中移除。
        result[i] = null;
        //2.更改指定项数值
        result[i][3] = '指定数值';
        //3.将result长度置为0
        result.length = 0;
        //4.return false
        return false;
    }
    
})

上面的4种方式中,第1,3,4种方式都不会触发afterChange方法。

afterChange

afterChange在更改一个或多个单元格之后触发。该方法返回的两个参数跟beforeChange方法参数含义相同

Handsontable.hooks.add("afterChange",function (result, source) {
    //可以获取到更改后的数据
})

官网的地址:https://handsontable.com/docs/7.3.0/tutorial-introduction.html

相关文章

网友评论

      本文标题:handsontable基础使用

      本文链接:https://www.haomeiwen.com/subject/yemmnhtx.html