Введение
В этом проекте вы научитесь создавать динамическую функциональность поиска в меню-дереве с использованием Vue.js. Проект включает получение данных вторичного меню из JSON-файла, реализацию функции нечеткого поиска и отображение отфильтрованного меню-дерева на странице.
👀 Предпросмотр

🎯 Задачи
В этом проекте вы научитесь:
- Получать данные вторичного меню из JSON-файла с использованием библиотеки
axios - Реализовывать функцию поиска для фильтрации пунктов меню в соответствии с вводом пользователя
- Отображать отфильтрованное меню-дерево на странице с выделением совпадающего текста
🏆 Достижения
После завершения этого проекта вы сможете:
- Разрабатывать динамический и интерактивный пользовательский интерфейс с использованием Vue.js
- Получать данные из JSON-файла и обрабатывать асинхронное получение данных
- Реализовать функцию нечеткого поиска для фильтрации данных в соответствии с вводом пользователя
- Отображать иерархическую структуру меню-дерева и выделять совпадающий текст
Настройка структуры проекта
В этом шаге вы настроите файлы и структуру проекта. Следуйте шагам ниже, чтобы выполнить этот шаг:
Откройте папку проекта. Структура каталогов следующая:
├── js
│ ├── axios.min.js ## Библиотека для инкапсуляции Ajax, используемая для асинхронного получения данных
│ ├── index.js ## Логический код для реализации функций страницы
│ └── vue.js ## Версия 2.x фреймворка Vue.js
├── data.json ## Общие данные вторичного меню
└── index.html ## Макет страницы
Нажмите кнопку Go Live в нижнем правом углу WebIDE, чтобы запустить проект.
Далее откройте "Web 8080" в верхней части ВМ и обновите ее вручную, и вы увидите страницу.
В настоящее время отображается только статический макет, и асинхронное получение и отображение данных вторичного меню, а также функция нечеткого поиска не реализованы.
Получение данных вторичного меню
В этом шаге вы научитесь получать данные вторичного меню из файла data.json с использованием библиотеки axios.
- Откройте файл
index.jsв директории/js. - В хуке жизненного цикла
created()используйте методaxios.get()для получения данных из файлаdata.json:
created() {
axios.get("../data.json").then((res) => {
this.list = res.data;
this.resultList = res.data;
});
},
Этот код получит данные из файла data.json и сохранит их в свойствах данных list и resultList.
Реализация функциональности поиска
В этом шаге вы научитесь реализовывать функцию поиска для пунктов вторичного меню.
- В файле
index.jsдобавьте методsearchData()в объектmethods:
methods: {
searchData() {
// TODO: Реализация функции поиска
this.resultList = [];
let set = new Set();
this.list.forEach((item1) => {
if (item1.meta.title.search(this.search)!== -1) {
set.add(item1);
}
if (item1.children) {
item1.children.forEach((item2) => {
if (item2.meta.title.search(this.search)!== -1) {
set.add(item1);
}
});
}
});
this.resultList = set;
}
}
- Обновите свойство данных
resultListв соответствии с вводом поиска. МетодsearchData()будет перебирать данныеlistи добавлять любые совпадающие элементы в объектSet. Затем объектSetназначается свойству данныхresultList.
Такая реализация будет отображать пункты вторичного меню, соответствующие запросу поиска, при этом совпадающий текст будет выделен желтым фоном.
После этих изменений на странице будет отображаться отфильтрованное меню-дерево в соответствии с вводом поиска, при этом совпадающий текст будет выделен.
Финальный эффект реализации выглядит так:

Резюме
Поздравляем! Вы завершили этот проект. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.



