Vue.js VueJS机具转到上一个菜单
我正在编写一个应用程序,其中基于嵌套的JSONArray生成一个固定长度的列表。每当从列表中单击任何元素时,如果该元素具有“子数据”数组,则列表将填充此“子数据”。基本上,你可以把它看作是有子菜单的菜单,这些子菜单有子菜单等等 我已经实现了两种方法来转到子级别[next()],这很好,但我不知道如何实现prev()方法来提升菜单中的一个级别。目前,我可以让它上升一级,但如果用户在两级以上,那么我不知道如何跟踪以上所有级别 这是密码笔-Vue.js VueJS机具转到上一个菜单,vue.js,menu,interaction,Vue.js,Menu,Interaction,我正在编写一个应用程序,其中基于嵌套的JSONArray生成一个固定长度的列表。每当从列表中单击任何元素时,如果该元素具有“子数据”数组,则列表将填充此“子数据”。基本上,你可以把它看作是有子菜单的菜单,这些子菜单有子菜单等等 我已经实现了两种方法来转到子级别[next()],这很好,但我不知道如何实现prev()方法来提升菜单中的一个级别。目前,我可以让它上升一级,但如果用户在两级以上,那么我不知道如何跟踪以上所有级别 这是密码笔- 使用您的代码,您可以简单地执行以下操作: 将菜单更改为数
使用您的代码,您可以简单地执行以下操作: 将菜单更改为数组,然后每次 返回使用最后一个,并将其从阵列中删除
祝你好运 谢谢@webkit:)我能问一个非常简单的问题吗?这是一个很好的实践吗,我这样做吗?不是真的:),我可能会避免每次都保存整个菜单,可能会保存一个标识符(lvl?)我相信可以进行更多的优化,但这取决于用例的范围和上下文。你能建议一些优化吗?但是感谢@webkit花时间回复
let JSONModel = (_id, _lvl, _title, _data) => {
return {
id: _id,
lvl: _lvl,
title: _title,
data: _data
};
};
let Menu = [
{
id: "01",
lvl: "01",
title: "menu 1",
data: []
},
{
id: "02",
lvl: "01",
title: "menu 2",
data: []
},
{
id: "03",
lvl: "01",
title: "menu 3",
data: []
},
{
id: "04",
lvl: "01",
title: "menu 4",
data: [
{
id: "01",
lvl: "02",
title: "submenu 1",
data: []
},
{
id: "02",
lvl: "02",
title: "submenu 2",
data: [
{
id: "01",
lvl: "03",
title: "sub submenu 1",
data: []
},
{
id: "02",
lvl: "03",
title: "sub submenu 2",
data: []
},
{
id: "03",
lvl: "03",
title: "sub submenu 3",
data: []
},
{
id: "04",
lvl: "03",
title: "sub submenu 4",
data: []
}
]
},
{
id: "03",
lvl: "02",
title: "submenu 3",
data: []
},
{
id: "04",
lvl: "02",
title: "submenu 4",
data: []
}
]
}
];
let demo = new Vue({
el: "#app",
data: {
input: Menu,
prevMenu:[]
},
computed: {},
created: function () {
},
methods: {
next: function(val1,val2) {
if (val1.length != 0) {
this.input = val1;
this.prevMenu = val2;
console.log(this.prevMenu);
}
},
prev: function() {
console.log(this.prevMenu);
this.input = this.prevMenu;
}
}
});
$("#prevmenu").on("click", function() {
demo.prev();
});
next: function(val1,val2) {
if (val1.length != 0) {
this.input = val1;
this.prevMenu.push(val2);
}
},
prev: function() {
let _menu = this.prevMenu.slice(); // this is just to clone the array
this.input = _menu[_menu.length - 1];
this.prevMenu.pop();
}