Я создаю приложение, которое имеет панель настроек пользователя, которая появляется в модальном диалоговом окне. Панель должна быть доступна с любой страницы приложения. Я пытаюсь найти лучший способ построить это в Ember.Ember Modal на маршруте, доступном из любого места
Я хотел бы построить его таким образом, что когда приложение перенаправляется на маршрут «/ settings», модальный диалог появляется с текущим маршрутом в фоновом режиме, как вы ожидали. Затем, когда модаль закрыт, приложение перенаправляет обратно на этот маршрут.
Если пользователь переходит непосредственно к «/ settings» из своего браузера, тогда мода будет отображаться со страницей по умолчанию в фоновом режиме.
Вот то, что я до сих пор:
export default Ember.Route.extend({
defaultParentRoute: "project.index",
beforeModel: function(transition){
// get the name of the current route or if
// user came directly to this url, use default route name
var parent = this.get("defaultParentRoute");
var application = this.controllerFor('application');
if(application && application.get('currentRouteName')) {
parent = application.get('currentRouteName');
}
this.set("parentRoute", parent);
},
renderTemplate: function(){
// make sure the current route is still rendered in the main outlet
this.render(this.get("parentRoute"));
// render this route into the 'modal' outlet
this.render({
into: 'application',
outlet: 'modal'
});
},
actions: {
removeModal: function(page){
// go back to the previous route
this.transitionTo(this.get("parentRoute"));
}
}
});
Это работает очень хорошо при плавании на пути из ссылки в приложении. Однако, если пользователь переходит прямо к «myapp/settings» в своем браузере, тогда шаблон страницы по умолчанию получает визуализацию, но без каких-либо данных, или пытается использовать данные «модели» из моего маршрута настроек.
Как я могу убедиться, что шаблон под модальным объектом визуализируется с соответствующими данными?
Here's a JS Bin to demonstrate. Попробуйте нажать «настройки» на любой странице приложения, а затем обновите браузер, пока модальные модальные настройки открыты.
Я полагаю маршрутизацию модальности немного «неестественный» для уголька , учитывая, как ember, похоже, хочет это сделать. Но картина не совсем беспрецедентна. Я видел, как модалы делались во многих веб-приложениях. Первое, что приходит в голову, это панель управления полосой (построена с помощью магистрали), где «/ account» является модальной и доступной из любого места. Мне нравится этот метод для загрузки данных модала, хотя, и я думаю, что буду использовать его для модалов, которые не требуют маршрутов. – Ian