مصطفی
3 سال پیش توسط مصطفی مطرح شد
2 پاسخ

ایجاد آبجکت تو در تو براساس parentid

سلام
عنوان رو نمی دونستم چجوری بگم من از طریق api خروجی زیر برام برمی گرده :

    {
      "id": 1,
      "name": "بهداشتی",
      "parentCategoryId": null
    },
    {
      "id": 3,
      "name": "صابون",
      "parentCategoryId": 1
    },
    {
      "id": 4,
      "name": "شوینده ماشین",
      "parentCategoryId": null
    },
    {
      "id": 5,
      "name": "صابون لوکس",
      "parentCategoryId": 3
    },

حالا می خوام یک آبجکت جدید بسازم براساس اون parentCategoryId اگه null بود که می شه نود اصلی اگه نه جستجو بشه بره زیر مجموعه آبجکت مربوطه و یه خروجی مشابه نمونه زیر بسازم :

      treeData: [
        {
          id: 1,
          title: 'node1',
          expanded: true,
          children: [
            {
              id: 2,            
              title: 'node 1-1',
              expanded: true,
              children: [
                {
                  id: 3,
                  title: 'node 1-1-1'
                }, {
                  id: 4,
                  title: 'node 1-1-2'
                }, {
                  id: 5,                
                  title: 'node 1-1-3'
                }
              ]
            }, {
              id: 6,    
              title: 'node 1-2',
              children: [
                {
                  id: 7,
                  title: 'test'
                }, {
                  id: 8,
                  title: 'test 1'
                }
              ]
            }
          ]
        }
      ]

این قراره بشه ورودی یه کامپوننت treeview
اون قسمت نودهای فرزند رو هر کاری کردم نشد

  beforeMount () {
    axios.get('/api/products/GetAllCategory')
      .then(res => {
        this.rowData = res.data.data
        const th = this
        res.data.data.map(function (item, index) {
          if (item.parentCategoryId === null) {
            th.treeData.push({id: item.id, title: item.name, expanded: false, async: false})
          }
        })
        console.log(th.treeData)
      }).catch(err => {
        console.log(err.response)
      })
  }

ثبت پرسش جدید
مصطفی
@m.fartaj 3 سال پیش مطرح شد
1

با این تابع مشکل حل شد

    createTreeData (data, parentId) {
      const z = []
      for (let i = 0; i < data.length; i++) {
        if (data[i].parentCategoryId === parentId) {
          const ch = this.createTreeData(data, data[i].id)
          const o = Object.keys(ch).length === 0 ? {} : { children: ch }
          const returnedTarget = Object.assign(data[i], o)
          z.push(returnedTarget)
        }
      }
      return z
    }  

مصطفی
@m.fartaj 3 سال پیش آپدیت شد
0

@hesammousavi
جناب موسوی ممنون می شم اگه راهنمایی کنید
یا اصلا به کسی که api و ایجاد می کنه بگم به همین شکل خروجی به من بده ؟؟
پکیجی که برای treeview قرار هست استفاده بشه vue-tree-halower هست


مصطفی
@m.fartaj 3 سال پیش مطرح شد
1

با این تابع مشکل حل شد

    createTreeData (data, parentId) {
      const z = []
      for (let i = 0; i < data.length; i++) {
        if (data[i].parentCategoryId === parentId) {
          const ch = this.createTreeData(data, data[i].id)
          const o = Object.keys(ch).length === 0 ? {} : { children: ch }
          const returnedTarget = Object.assign(data[i], o)
          z.push(returnedTarget)
        }
      }
      return z
    }  

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام