2013-02-15 3 views
1

Как-то даже в самом простом примере я придумываю вид, исчезает, когда я пытаюсь перейти на другое состояние/маршрут.Вид Ember.js исчезает при переходе

Мой индекс маршрут выглядит следующим образом:

--Application------------------------------- 
| --Header-------------------------------- | 
| | --ViewA----------------------------- | | 
| | | View A!       | | | 
| | |__________________________________| | | 
| |          | | 
| | --ViewB----------------------------- | | 
| | | View B!       | | | 
| | |__________________________________| | | 
| |______________________________________| | 
|           | 
| --Main---------------------------------- | 
| | I stay here, no matter what!   | | 
| |______________________________________| | 
|__________________________________________| 

Как только я иду в состояние «Next», ViewB исчезает, и это выглядит следующим образом:

--Application------------------------------- 
| --Header-------------------------------- | 
| | --ViewA----------------------------- | | 
| | | View A!       | | | 
| | |__________________________________| | | 
| |______________________________________| | 
|           | 
| --Main---------------------------------- | 
| | I stay here, no matter what!   | | 
| |______________________________________| | 
|__________________________________________| 

поведение можно увидеть в этом примере приложение http://jsfiddle.net/SAra5/4/

ответ

0

Похоже, что он запутывается и не отображает все выходы, если вы не укажете его, чтобы что-либо сделать на новом маршруте. ake вещи работают должным образом будет включать то, что вы хотите, чтобы маршрут визуализировать снова в NextRoute.

App.NextRoute = Ember.Route.extend({ 
     renderTemplate: function() { 
     this.render('header', {'outlet':'header', 'into':'application'}); 
     this.render('main', {'outlet':'main', 'into':'application'}); 

     this.render('viewB', {'outlet':'viewB', 'into':'header'}); 
     this.render('viewA', {'outlet':'viewA', 'into':'header'}); 
    } 
}); 

Если поменять this.render('viewB', {'outlet':'viewB', 'into':'header'}); с this.render('viewA', {'outlet':'viewA', 'into':'header'}); в маршруте индекс, прежде чем делать изменения в NextRoute, вы увидите, что он теперь только делает viewB! Странно, да? Я не уверен, что это ошибка или функция, хотя в данный момент времени.

+0

Мне кажется, что это ошибка, потому что вот еще один странный пример для пользователя IRC. Представления A & B теперь ссылаются на шаблон, но шаблон «Main» теперь исчезает: http://jsfiddle.net/ianpetzer/Xdrje/ ps: О, и btw У меня ничего не изменилось в изменениях DOM, пока я не явным образом скажите ember, чтобы сделать это. И я не вижу никакой логической причины обновления текущего DOM только потому, что вы меняете состояния. –

+0

Ох. Если вы не укажете маршрут, кажется, что последняя строка маршрута игнорируется и не повторно отображается. См. [This] (http://jsfiddle.net/Xdrje/1/) jsfiddle. – Deif

+0

Похоже на то, что последний раз исчезает при переходе в новое состояние. – dmzza

0

Я не уверен, что от предполагаемого поведения, но это лучше абстрагироваться из вашего IndexRoute, потому что нужно же в каждом маршруте, в противном случае он будет удален: http://jsfiddle.net/SAra5/5/

Однако, ваш пример кажется запутанным. Я думаю, что решение для вас находится в {{render}}. Пожалуйста, см. Мой пост здесь: Different rendering techniques in emberjs handlebars template

+0

Как вы можете ясно видеть в приведенных выше комментариях и ответах, он удаляет только последний шаблон, добавленный с помощью this.render(). Причина этого примера заключается в том, чтобы иметь выход, который поддерживается «живым» через время жизни приложения. Мне нужно это, потому что у меня есть встроенное флэш-приложение, которое запрашивает разрешение на веб-камеру и камеру пользователя, и о котором нужно только один раз спросить. как только я должен снова добавить его в дом, он снова попросит разрешения. –

+0

В качестве промежуточного решения вы можете сделать приложение Flash не последним 'this.render' в Маршруте? – Deif

+0

В качестве реального решения вы можете использовать '{{render}}' для окончательного отображения приложения Flash на экран, нет? Розетки - непостоянные вещи, и вы должны размещать постоянные представления вне их. – Wildhoney

Смежные вопросы