2015-02-02 3 views
0

Я пытаюсь выдвинуть панель, а затем скрыть ее с помощью extjs. Слайд работает нормально, но как только я добавляю функцию скрытия, она перестает работать. Как это исправить. Моя функция такова, как показано ниже.Панель Extjs SlideOut

toggleSidebar : function() { 
    var sidebar = this.getSidebar(); 
    if(sidebar.hidden){ 
     sidebar['show'](); 
    }else{ 
     sidebar.el.slideOut('l', { 
      easing: 'easeOut', 
      duration: 200, 
      scope: this, 
      callback: this.onSidebarAnim() 
     }); 
     sidebar['hide'](); // Slide works if I remove this line. 
    } 


}, 
+0

Что говорит консоль? любые ошибки? –

ответ

0

Анимация представляет собой асинхронный процесс, и slideOut не блокирует, пока анимация не завершится; на самом деле ваш код начинает анимировать панель, а затем прячет ее немедленно. Вот почему он не работает так, как вы ожидаете.

Решение должно скрыть панель после анимация завершена. Для этого нужен обратный вызов, за исключением того, что в исходном коде вместо передачи функции в свойстве callback вы вызываете его и присваиваете результат его выполнения свойству callback. Это не сработает, и на самом деле это взорвется исключением «foo not a function».

toggleSidebar: function() { 
    var sidebar = this.getSidebar(); 

    if (sidebar.hidden) { 
     sidebar.show(); 
    } 
    else { 
     sidebar.el.slideOut('l', { 
      easing: 'easeOut', 
      duration: 200, 
      scope: this, 
      // Pass the function itself, note no parentheses: 
      callback: this.onSidebarAnim 
     }); 
    } 
}, 

onSidebarAnim: function() { 
    this.getSidebar().hide(); 
    ... 
} 
+0

Спасибо @Alex, удалив родительское пособие. Это не дало мне никаких исключений с родителем. Вы знаете, как я буду обрабатывать slideIn после этого? В основном я пытаюсь создать 2 панели с левым боковым входом и выходом. Если я скрою его, то слайд не будет работать, пока я не покажу его снова. – Asharan

+0

@Asharan Не могли бы вы использовать макет границы? Взгляните на пример KitchenSink. –

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