Параметры Dojo для вкладок

У меня проблемы с документацией Dojo (как обычно) .
В своем TabContainer API они перечисляют второй аргумент как объект с именем "params", но они никогда не говорят, что вы можете фактически поместить в этот объект params. Можно указать ширину? Высота? Могу ли я указать идентификаторы div, которые я хочу использовать в качестве вкладок внутри контейнера?

Также нет спецификации того, какие атрибуты я бы поместил в HTML, если бы я хотел указать контейнеры вкладок, которые будут анализироваться парсером Dojo. Я нашел следующий пример, который позволяет вам указать заголовок, выбранные и закрываемые параметры. Что-нибудь еще?

<div id = "tabA1" dojoType = "dijit.layout.ContentPane" title = "First Tab"  selected = "true" closable = "true">
        First Tab
    </div>
    <div id = "tabA2" dojoType = "dijit.layout.ContentPane" title = "Second Tab" closable = "true">
        Second Tab
    </div>
    <div id = "tabA3" dojoType = "dijit.layout.ContentPane" title = "Third Tab" closable = "true">
        Third Tab
    </div>
</div>
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
0
4 368
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я не эксперт в виджетах Dojo, но вот что я знаю:

  1. Все конструкторы виджетов Dojo имеют подпись:

    var widget = новый виджет (параметры, узел);

  2. Лучший способ узнать параметры - это посмотреть исходный код - не пугайтесь, это будут задокументированные переменные в начале соответствующего класса.

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

  4. Лучший способ найти этот материал - использовать оформление Dojo с вашим любимым текстовым редактором. Но ночная проверка тоже работает (если следовать стволу). Или исходный браузер Trac.

  5. Не стоит недооценивать силу просмотра тестов и демонстраций.

Пример: dijit.layout.TabContainer ⇒ dijit / layout / TabContainer.js. Если файл отсутствует, загляните в каталоги иерархии для _base.js или в некоторые файлы с похожим звуком - последние могут объединять связанные классы вместе. Но в большинстве случаев (например, с TabContainer) вы его сразу найдете. Пойдем посмотрим.

В верхней части класса есть два публично задокументированных параметра:

  • tabPosition - Строка. Определяет расположение вкладок относительно содержимого вкладок. "верх", "низ", "левый-h", "правый-h". По умолчанию: «верх».
  • tabStrip - bool. Определяет, получает ли список вкладок дополнительный класс для компоновки. По умолчанию: false.
  • _controllerWidget - просто игнорируйте его, никакие общедоступные параметры не начинаются с подчеркивания - это обычное соглашение JavaScript для обозначения защищенных членов.

Но это еще не все. TabContainer основан на dijit.layout.StackContainer (достаточно взглянуть на заголовок dojo.declare ()). Мы также можем использовать общедоступные параметры StackContainer:

  • doLayout - логическое значение. Если это правда, измените размер моего текущего отображаемого дочернего элемента, чтобы он соответствовал моему размеру. По умолчанию: true.
  • persist - логический. Запоминает выбранного ребенка через сеансы. По умолчанию: false.

Как видите, код и параметры хорошо документированы, но не всегда отражаются в инструменте API. Теперь мы можем с уверенностью создать контейнер вкладок.

Но сначала давайте посмотрим на это в действии. Все тесты Dijit всегда находятся в диджит / тесты. Любой виджет dijit.layout. * Будет протестирован в dijit / тесты / макет. Соответствующий тестовый файл будет называться что-то вроде test_TabContainer.html, и на самом деле я вижу для этого 5 файлов:

Например, давайте воссоздадим первый TabContainer test_TabContainer.html:

var tc = new dijit.layout.TabContainer(
  {persist: true, tabStrip: true}, "mainTabContainer");

Или мы можем сделать это как в встроенном тесте:

<div id = "mainTabContainer" dojoType = "dijit.layout.TabContainer"
    persist = "true" tabStrip = "true" style = "width: 100%; height: 20em;">
  ...
</div>

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

Да, я бы хотел, чтобы в документации по API были все эти мелкие детали, но вся настройка интуитивно понятна, а соответствующие части задокументированы прямо в файле. Мы обратились к исходному коду, но мы не пытались расшифровать исходный код, а просто читали удобочитаемые комментарии в верхней части класса.

Другие вопросы по теме