vue2和vue3 tree(使用插槽)和(过滤搜索关键字)的区别

一、vue2和vue3 slot-scope插槽的使用

1.vue2

vue2 使用slot-scope=“{node, data }"

  <el-input placeholder="输入关键字进行过滤" v-model="filterText">
  <el-tree :data="menus" show-checkbox node-key="id" :filter-node-method="filterNode">
      <div slot-scope="{node, data }"  class="custom-tree-node" >
      <!--字数限制 (9-->
            <div class="nodelabel" :title="node.label">{{ node.label | ellipsis(9)}}</div>
            <div v-if="data.num>0">({{data.num}})</div>
      </div>
   </el-tree>

补充:设置字数限制(可通过js过滤和css样式)

//js
 filters: {
    /**树节点长度过滤器 */
   ellipsis(val, len) {
   if (!val) return "";
      val = val.toString();
      if (val.length > len) {
         return val.slice(0, len) + "...";
          }
     return val;
  },
 }
 .nodelabel{
    width: 100px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    }

2.vue3

vue3 使用 #default=“{node, data }"

 <el-input placeholder="输入关键字进行过滤" v-model="filterText">
 <el-tree :filter-node-method="filterNode" ref="treeRef" class="datatree"
           :data="tree"
      >
        <template #default="{ node }">
          <span class="nodelabel" :title="node.label">{{ node.label }}</span
          >
        </template>
   </el-tree>

一、vue2和vue3 tree过滤搜索关键字的使用

1.vue2

  filterNode(value, data) {
      if (!value) return true;
      return data.label.indexOf(value) !== -1;
    }

2.vue3

const filterText = ref("");
const treeRef = ref(null);
const filterNode = (query, node) => {
  if (!query) return true;
  return node.label.includes(query);
};
//监听
watch(filterText, (val) => {
  treeRef.value.filter(val);
});
···
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值