vue elementui異步給dom賦值無效

最近在研究el-admin,角色管理裏面有個功能是點擊左側的表格裏面的一個角色,右側的樹就會自動初始化。

於是我在點擊的方法裏面,去後臺異步調用了一下接口,然後返回數據並把數據賦值給menuIds,但是我發現這個異步請求獲取到的數據壓根就不能讓樹控件刷新。

代碼如下,我是在handleCurrentChange裏面操作的,網上說通過push方法能夠起作用,但是根本沒用,最後我的解決方法如下,先將ids都存儲起來,然後再在nextTick方法裏面去給menuIds賦值。

async initMenus(val) {
      this.menuIds = []
      const AV = window.AV
      const role = AV.Object.createWithoutData('Role', val.objectId);
      const roleMenuQuery = new AV.Query('RoleMenu');
      roleMenuQuery.equalTo("role", role)
      roleMenuQuery.include("menu")
      var roleMenus = await roleMenuQuery.find()
      var ids = [];
      roleMenus.forEach(roleMenu => {
        var roleMenuJson = roleMenu.toJSON()
        ids.push(roleMenuJson.menu.menuId)
      })
      this.$nextTick(() => {
        this.menuIds = ids;
      })
      // https://blog.csdn.net/xudalin/article/details/103158941
      // 這個代碼解決了樹控件的半選問題。參考鏈接如上
      /*ids.forEach((i, n) => {
        var node = this.$refs.menu.getNode(i);
        console.log(node.isLeaf)
        if (node.isLeaf) {
          this.$refs.menu.setChecked(node, true);
        }
      });*/
    },
    // 觸發單選
    handleCurrentChange(val) {
      console.log("handleCurrentChange")
      if (val) {
        const _this = this
        // 清空菜單的選中
        this.$refs.menu.setCheckedKeys([])
        // 保存當前的角色id
        this.currentId = val.id
        // this.showButton = this.level <= val.level
        // 初始化
        this.initMenus(val)
        // 菜單數據需要特殊處理
        /*val.menus.forEach(function (data, index) {
          _this.menuIds.push(data.id)
        })*/
      }
    },

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章