2017-02-03 9 views
0

Я создаю приложение Ionic 2, в котором элементы бокового меню должны быть загружены асинхронно. Элементы в боковом меню будут меняться на каждой странице. На данный момент я начал новый проект Ionic 2 с шаблоном бокового меню.Изменение элементов меню Ionic2 асинхронно

Проблема, с которой я столкнулся, - это когда элементы загружены в боковое меню, я не могу изменить эти элементы на другой странице.

Код дизайна моего бокового меню находится в файле app.html, а список элементов находится в файле app.component.ts. Когда приложение загружается, элементы перечислены в боковом меню, но когда я перехожу на другую страницу, я не могу изменить те же самые элементы.

Есть ли способ изменить его?

ответ

2

Я столкнулся с подобной ситуацией в одном из своих проектов и использовал Events от «ионно-углового» для реализации динамических функций бокового меню.

Вы можете подписаться на событие, скажем, «UPDATE_SIDE_MENU», в конструкторе app.component.ts файла с помощью:

events.subscribe("UPDATE_SIDE_MENU", (eventData) => { 
    //Logic to update Side-menu 
}); 

И всякий раз, когда вы переходите на другую страницу, где вам нужно обновить боковое меню, вы можете опубликовать событие в этой странице (обычно в ionViewWillEnter функции) с помощью:

events.publish("UPDATE_SIDE_MENU", "some event related data") 

, которые будут получены в файле app.component.ts и там вы можете реализовать код для обновления бокового меню.

+0

Спасибо, что поделились идеей. У меня мало сомнений. Когда мой app.component.ts получит запрос на обновление бокового меню, будет ли отображаться app.html снова? См. У меня есть массив элементов в app.component.ts и в файле app.html. Я использую этот массив для отображения пунктов меню. В вашем случае предположим, что app.component получает запрос на обновление, и я обновляю список массивов, будет ли app.html отображать новый список? – replysam2009

+0

вы можете подключиться к одному из событий жизненного цикла 'ionViewDidLoad() {}' https://ionicframework.com/docs/v2/api/navigation/NavController/ –

+0

@ rohit-gupta Я попытался реализовать вашу идею. Оно работает. Тханк мат. – replysam2009