提示getCheckedNodes() 报错;
<el-tree
v-for="item in arr"
:key="item.id"
@check="check"
ref="tree"
:data="data"
show-checkbox
node-key="id"
:default-expanded-keys="[2, 3]"
:default-checked-keys="[5,3]">
</el-tree>
ok() {
let res = this.$refs.tree.getCheckedNodes();
let arr = [];
res.forEach((item) => {
arr.push(item.id)
});
var b = arr.join(",");
console.log(b);
},
以前是用这种方法
@check="check" 复选框点击的时候出发这个事件
check(data) {
// console.info(arr.indexOf('a'));//在IE某些版本中不支持,可以自行扩展
var flag = false; // 数组中添加新新元素的标识
var fl = this.gg.indexOf(data.id); // 判断数组中是否存在data.id
// console.log(fl);
if (fl<0) { // 小于零代表数组中没有这个元素
flag = true;
}else { //大于零标示数组中有这个元素
flag = false;
};
var index = data.id ;
#### // index就是 返回的id
// console.log(index);
// 删除数组中指定元素的方法开始
Array.prototype.aindexOf = function(val) {
for (var i = 0; i < this.length; i++) {
if (this[i] == val) return i;
}
return -1;
};
Array.prototype.remove = function(val) {
var index = this.aindexOf(val);
if (index > -1) {
this.splice(index, 1);
}
};
// 删除数组中指定元素的方法结束
// 实际对数组的操作
if(flag){
// 没有就添加
this.gg.push(index);
}else {
// 有就删除
this.gg.remove(index);
console.log("kk");
}
// console.log(this.gg);
},
原理: 通过鼠标点击拿到选中的id,然后判断数组中存不存在这个id,有就删除,没有就添加这个id;