Вход

Просмотр полной версии : Вставить пункт меню в нужное место


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
this.menu[key].children.push(dataForm.data) 
Не знаю, что у вас за язык (фрейворк), но на обычном js такое не работает.
children - не массив. У него нет метода push

ureech
04.11.2022, 22:43
children - не массив.
У меня массив)
Просто не указал его в объекте, так как когда писал вопрос не знал, что понадобится. Там так

0: Object { id: 1, title: "Главное меню", name: "main",chidren:Array[{...}] … }
Но вы правы код в vue файле)