ContentPane

Диджит ContentPane является одним из основных диджитов компоновки: он реализует мозаичную схему размещения. Он наследует свойства и методы непосредственно от класса _Widget и концептуально напоминает навороченный элемент iframe, но в отличие от него привносит в страницу множество дополнительных особенностей, из которых далеко не последними является возможность отображать произвольные фрагменты HTML (а не только целые документы), перезагружать содержимое с помощью XHR, отображать виджеты и соблюдать тему страницы. Чаще всего диджит ContentPane располагается внутри других виджетов, таких как TabContainer, хотя в практике встречаются интересные способы применения его как самостоятельного диджита.

При наиболее типичном использовании диджит ContentPane не делает ничего особенного; это показано в примере 14.1.
Пример 14.1. Создание диджита ContentPane в разметке

Fun with ContentPane!
href="http://o.aolcdn.com/dojo/1.1/dojo/resources/dojo.css" />
href="http://o.aolcdn.com/dojo/1.1/dijit/themes/tundra/tundra.css" />
djConfig="parseOnLoad:true",
type="text/javascript"
src="http://o.aolcdn.com/dojo/1.1/dojo/dojo.xd.js">


(body class="tundra")
Nothing special going on here.

(/body)


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


Предположим, что URL foo на стороне сервера ссылается на фрагмент текста, тогда для его отображения можно было бы использовать ContentPane, как показано ниже:

В данном конкретном случае при обращении к URL foo возвращается простое строковое значение, хотя вполне возможно организовать возврат виджета, который автоматически будет подвергнут парсингу и отображен на странице. Однако, следует помнить, что при этом виджет уже должен быть подключен к странице с помощью функции dojo.require. Например, предположим, что при обращении к URL возвращается
, тогда по умолчанию этот диджит будет автоматически создан и отображен на странице.

Если предположить, что исходный узел имеет атрибут id со значением foo, то создать ContentPane программным способом можно было бы, как показано ниже:
var contentPane = new dijit.layout.ContentPane({ /* properties*/, "foo");
contentPane.startup(); // возьмите за правило всегда вызывать метод startup

Поскольку диджит ContentPane не является наследником класса _Container, в нем отсутствуют встроенные методы добавления дочерних диджитов.


Однако, можно использовать ссылку domNode этого диджита, чтобы с ее помощью добавлять в диджит другие узлы, используя старый добрый JavaScript. Например, используя существующий диджит ContentPane, созданный в предыдущем примере:
contentPane.domNode.appendChild(someOtherDijit.domNode);

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Dojo на эту тему:
AccordionContainer
BorderContainer
StackContainer
TabContainer
Общие особенности диджитов компоновки

Вернуться в раздел: Dojo / Виджеты компоновки