Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Вставить пункт меню в нужное место (https://javascript.ru/forum/dom-window/84631-vstavit-punkt-menyu-v-nuzhnoe-mesto.html)

ureech 03.11.2022 22:13

Вставить пункт меню в нужное место
 
Привет.
console.log(data)
Object { data: Proxy }
data: Proxy { <target>: {…}, <handler>: {…} }
<target>: Object { title: "Испоьзование npm", parent_id: 3 }


console.log(menu)
Proxy { <target>: (3) […], <handler>: {…} }
<target>: Array(3) [ {…}, {…}, {…} ]
0: Object { id: 1, title: "Главное меню", name: "main", … }
1: Object { id: 2, title: "Пользовательское меню", name: "user", … }
2: Object { id: 3, title: "Нижнее меню", name: "footer", … }


мне надо data вставить в menu, как подменю. В каждом меню могут быть свои подменю. И мне нужно, что бы data встала на своё место. В данном случае, как подменю в "Нижнее меню". Начал так

function  addItem(data){
var arr={};
for(var key in this.menu ){
if(this.menu[key].id ==data.data.parent_id ){
arr = this.menu[key] 
}
$(arr).push(data.data);
}
}

Как мне теперь вернуть собранное this.menu

ureech 04.11.2022 12:32

Решил
addItem(dataForm){
             for(var key in this.menu ){   
                if(this.menu[key].id ==dataForm.data.parent_id ){
                this.menu[key].children.push(dataForm.data)              
                   }              
               }              
           }

voraa 04.11.2022 12:36

Цитата:

Сообщение от ureech
this.menu[key].children.push(dataForm.data) 

Не знаю, что у вас за язык (фрейворк), но на обычном js такое не работает.
children - не массив. У него нет метода push

ureech 04.11.2022 22:43

Цитата:

Сообщение от voraa
children - не массив.

У меня массив)
Просто не указал его в объекте, так как когда писал вопрос не знал, что понадобится. Там так

0: Object { id: 1, title: "Главное меню", name: "main",chidren:Array[{...}] … }

Но вы правы код в vue файле)


Часовой пояс GMT +3, время: 04:11.