У меня проблемы с документацией 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>



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я не эксперт в виджетах Dojo, но вот что я знаю:
Все конструкторы виджетов Dojo имеют подпись:
var widget = новый виджет (параметры, узел);
Лучший способ узнать параметры - это посмотреть исходный код - не пугайтесь, это будут задокументированные переменные в начале соответствующего класса.
Соответствующий файл обычно легко найти, используя имя виджета, потому что они названы по их пути.
Лучший способ найти этот материал - использовать оформление Dojo с вашим любимым текстовым редактором. Но ночная проверка тоже работает (если следовать стволу). Или исходный браузер Trac.
Не стоит недооценивать силу просмотра тестов и демонстраций.
Пример: dijit.layout.TabContainer ⇒ dijit / layout / TabContainer.js. Если файл отсутствует, загляните в каталоги иерархии для _base.js или в некоторые файлы с похожим звуком - последние могут объединять связанные классы вместе. Но в большинстве случаев (например, с TabContainer) вы его сразу найдете. Пойдем посмотрим.
В верхней части класса есть два публично задокументированных параметра:
Но это еще не все. TabContainer основан на dijit.layout.StackContainer (достаточно взглянуть на заголовок dojo.declare ()). Мы также можем использовать общедоступные параметры StackContainer:
Как видите, код и параметры хорошо документированы, но не всегда отражаются в инструменте 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 были все эти мелкие детали, но вся настройка интуитивно понятна, а соответствующие части задокументированы прямо в файле. Мы обратились к исходному коду, но мы не пытались расшифровать исходный код, а просто читали удобочитаемые комментарии в верхней части класса.