2013-09-24 3 views
0

У меня есть панель навигации с ссылкой «О». Когда вы нажимаете, он должен вызывать subnav и перенаправлять вас на «about.philosophy», а не на «about.index», что и происходит.Нарушение карусели при первоначальном перенаправлении, но работает правильно при обновлении

У меня есть карусельный частичный Я рендеринг на шаблоне about.hbs:

<div class="row about-bg"> 
    {{partial 'about/about-carousel'}} 
</div> 
{{outlet}} 

что стреляет в AboutView:

Ew.AboutView = Ember.View.extend({ 
    didInsertElement : function(){ 
    $(window).load(function() { 
     $("#about-carousel").carouFredSel({ 
      responsive: true, 
      width: "100%", 
      height: 'variable', 
      items: { 
      height: 'variable' 
      } 
     }); 
    }); 
    } 
}); 

Однако, когда 'О' ссылке сначала нажимается, меняя URL-адрес на «/ о/философия», карусель сломан - все изображения просто укладываются друг на друга и нет движения - как и js, не найдено или что-то еще. Но как только я ударил обновление в моем браузере, карусель отлично выглядит. Это должно быть перенаправление, которое ломает его, потому что оно отлично работает при обновлении, когда ember не запускает перенаправление.

Функция перенаправления, наряду с subnav кодом рендеринга в AboutIndexRoute:

Ew.AboutIndexRoute = Ember.Route.extend({ 
    activate: function(){ 
    this.controllerFor('application').set('renderAboutSubNav', true); 
    }, 
    deactivate: function(){ 
    this.controllerFor('application').set('renderAboutSubNav', false); 
    }, 
    redirect: function(){ 
    this.transitionTo('about.philosophy'); 
    } 
}); 

subnav также не в состоянии отобразить.

Большое спасибо!

ответ

0

Удалите обертку $(window).load(function() {}); из вашего метода didInsertElement.

+0

Это исправляет эту проблему, однако я добавил '$ (window) .load (function() {});' потому что без него div, занятый ползунком, пуст, пока не начнется первое изображение. это первое изображение слайдера не отображается до первого движения. Любая идея, как это решить? – reknirt

+0

Я не уверен, что полностью понимаю вашу проблему. Не могли бы вы уточнить? Еще лучше - вы могли бы собрать jsFiddle? – chopper

+0

Прошу прощения ... так что происходит, что карусель реагирует и размещается внутри div, который не имеет определенной высоты, установленной на нем, потому что он отзывчив. Таким образом, высота контейнера для карусели составляет '0px', пока изображение не будет« скользить », чтобы получить фактическую высоту контейнера. Поэтому по какой-то причине без '$ (window) .load (function() {});' первое изображение в коллекции не видно - в результате контейнер с 'height: 0px'. Только когда второе изображение в коллекции перемещается для просмотра - первое фактическое движение скольжения - делает контейнер ростом и становится видимым. – reknirt

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