Nano Hash - криптовалюты, майнинг, программирование

Как дождаться отображения панели ExtJS перед расширением?

У меня есть infoContainer, расширяющий Ext.panel.Panel в ExtJS 4.0.7 с этими свойствами (показаны только соответствующие):

  • складной: правда
  • рухнул: правда
  • отключено: правда
  • ForceLayout: правда

У меня есть некоторые модификации (некоторые рендеры) для применения к компонентам (таким как текстовые поля, флажки и т. д.), поэтому я делаю это в beforeexpand панели. Но когда панель расширяется, мы ясно видим изменения компонентов после того, как панель становится видимой. Итак, мне нужно, чтобы эта логика была завершена до того, как мы увидим открытую панель.

Итак, могу ли я ограничить расширение панели только тогда, когда логика beforeexpand выполнена? и как это сделать?

22.06.2012

  • Должна ли логика рендеринга меняться каждый раз, когда эта панель расширяется? Или это только один раз после загрузки приложения? 22.06.2012
  • Один раз, в первый раз панель расширяется. 22.06.2012

Ответы:


1

Вот как бы я это сделал:

Создайте функцию, которая выполняет логику рендеринга/модификации, которую вы в настоящее время хотите выполнять в событии beforeexpand.

В этой функции установите пользовательское свойство на панели, чтобы вы знали, что оно отображается/модифицируется в соответствии с вашей логикой, например. myPanel.isPrepared = true;.

Кроме того, в самом конце этой функции сделайте еще один вызов myPanel.expand();

Затем в обработчике beforeexpand поместите условие, которое проверяет, были ли выполнены ваши рендеринг/модификации, например, if (myPanel.isPrepared) {...

Если пройдет, то ничего не делайте в обработчике и дайте панели расшириться.

Если он не проходит, вызовите функцию, упомянутую выше, а затем return false;, которая остановит расширение панели, ваша функция выполнит необходимый рендеринг/модификацию, которую вы хотели, а затем вызовет расширение, когда все будет готово. сделано.

Предполагая, что вы не создаете свое приложение с шаблоном MVC, обработчик и функция могут выглядеть примерно так:

myPanel.on('beforeexpand`, function() {
    if (!myPanel.isPrepared) {
        prepareMyPanel();
        return false;
    }
})

function prepareMyPanel() {
    // rendering / modification logic here...
    myPanel.isPrepared = true;
    myPanel.expand();
}

Если вы создаете свое приложение с шаблоном MVC, вы сможете перевести его на правильные обработчики контроллера.

22.06.2012
  • Я понимаю логику этого ответа, и он хорошо объяснен, пробовал много способов, но для меня это не работает. 28.06.2012
  • @elbaid вы получаете какое-либо сообщение об ошибке? функция prepareMyPanel вообще вызывается? не могли бы вы опубликовать код, который вы пробовали? 28.06.2012
  • Там нет сообщения об ошибке, просто не работает, события не запускаются в том порядке, в котором я хочу. 15.08.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..