VUE 使用 IView 实现Tree进行异步数据加载

4 篇文章 0 订阅
1 篇文章 0 订阅

VUE 使用 IView 实现Tree进行异步数据加载,在页面初始化时默认加载二级数据,二级之后的数据再进行异步数据加载

布局

<Tree v-show="familyList[0].children.length > 0"  
ref="mytree" 
:data="familyList" 
:load-data="handleLoadData"  
@on-select-change="selChange" 
@on-check-change="ClickCheck" 
show-checkbox 
expand-node>
</Tree> 

数据加载及方法

export default {
  data(){
    return{
      familyList: [
        {
          ID: "0",
          Name: "结构",
          title: "结构",
          loading: false,
          expand: true,
          selected: true,
          children: [],
          disableCheckbox: true
        },
      ],
    }
  },
  mounted(){
    this.loadData(this.familyList[0]);
  },
  methods:{
    loadData(item, callback) {
      var _this = this;
      var _item = item;
      var pid = "";
      if (_item) {
        pid = _item.ID;
      }
      post("/api/GetTree", {
        PID: pid
      }).then((res) => {
        if (res.Code == 0) {
          var list = res.Datas;
          list.forEach(function(obj, indxs) {
            if (obj.ChildCont > 0) {
              obj.loading = false;
            }
          });
          if (callback !== undefined) {
            callback(list);
          }
          if(_this.familyList[0].children.length == 0){
            _this.familyList[0].children =list;
          }
        }
      });
    },
    handleLoadData(item, callback) {
      this.loadData(item, function(data) {
        callback(data);
      });
      this.$forceUpdate();
    },
    selChange(selarray, item) {//当前已选中的节点数组、当前项
     
    },
    ClickCheck(selarray, item) {//当前已选中的节点数组、当前项
     
    }
  }
}
</script>

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Ant Design Vue中的Tree组件中,您可以使用异步加载数据实现选中父节点就展开子节点的功能。以下是实现该功能的步骤: 1. 定义Tree节点的数据源,包括节点的id、名称、父节点id等属性。 2. 在Tree组件中设置show-expand属性为true,这将显示展开和折叠图标。 3. 设置Tree组件的load-data属性,指定异步加载数据的方法,该方法将根据父节点id加载子节点数据。 4. 在Tree组件的节点模板中,使用 @click.native 事件监听节点的点击事件,并在事件处理程序中判断当前节点是否有子节点,如果有则展开,否则不展开。 下面是一个示例代码,用于实现选中父节点就展开子节点的功能: ```html <template> <a-tree :show-expand="true" :load-data="loadData" :tree-data="treeData" > <template slot-scope="{ data }"> <span :class="{'tree-node-disabled': data.disabled}" @click.native="handleClick(data)" > {{ data.title }} </span> </template> </a-tree> </template> <script> export default { data() { return { treeData: [], }; }, mounted() { this.loadData(null, (data) => { this.treeData = data; }); }, methods: { loadData(parent, callback) { // 根据父节点id加载子节点数据 // ... }, handleClick(node) { // 判断当前节点是否有子节点 if (node.children && node.children.length > 0) { // 展开子节点 node.expanded = !node.expanded; } }, }, }; </script> ``` 在上面的示例代码中,loadData方法用于异步加载节点数据,handleClick方法用于处理节点的点击事件。当用户单击节点时,如果该节点有子节点,则会展开子节点,否则不会展开。请按照您的实际需求进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值