Диджит HelloWorld (Дубль 2: Изменение шаблона)

Предположим, что вам необходимо сделать свой диджит немного сложнее. Например, для начала было бы здорово реализовать возможность динамического отображения различных сообщений при каждой загрузке страницы, вместо того чтобы всякий раз выводить одно и тоже сообщение. Один из замечательных механизмов Dojo, используемых для поддержки концепции самодостаточности диджита, позволяет в файле шаблона ссылаться на свойства диджита, объявляемые в исходном программном коде JavaScript. Использование свойств ди
жита внутри шаблона полезно только до выполнения метода buildRendering класса _Templated, тем не менее вы увидите, что инициализация некоторой части отображаемого диджита, перед тем как он появится на экране, является очень часто используемой операцией.

Ссылка на свойство диджита внутри файла шаблона оформляется очень просто. Взгляните на следующую версию файла шаблона Hello World:
${greeting}


Проще говоря, вы можете обратиться к любому существующему свойству диджита изнутри файла шаблона и использовать его для изменения изображения виджета, его стиля и т. д. Однако здесь имеется маленькое, но очень важное ограничение: делать это следует в нужное время.


В частности, для работы со свойствами диджита, которые используются в шаблонах, лучше всего подходит метод postMixInProperties. Напомню, что метод postMixInProperties вызывается перед методом builRendering, который является той точкой, где диджит вставляется в дерево DOM и становится видимым.

Без лишних слов перейдем к примеру 12.3, где приводится содержимое файла JavaScript с реализацией диджита, предусматривающей возможность манипулирования свойствами в шаблоне для отображения другого текста приветствия.
Пример 12.3. HelloWorld (Дубль 2: postMixInProperties)
//Пример правильной организации манипулирования свойством диджита в методе
//postMixInProperties, ссылка на которое присутствует в строке шаблона
dojo.provide("dtdg.HelloWorld");
dojo.require("dijit._Widget");
dojo.require("dijit._Templated");
dojo.declare(
"dtdg.HelloWorld",
[dijit._Widget, dijit._Templated],
{
greeting : "",
templatePath: dojo.moduleUrl(
"dtdg",
"templates/HelloWorld.html"
),
postMixInProperties: function() {
//Манипулирование свойствами, ссылки на которые
//присутствуют в шаблонах.
this.greeting = "Hello World"; //использовать статический текст.
}
}
)

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

Статьи из раздела Dojo на эту тему:
Анатомия библиотеки Dijit
Быстрое создание прототипов виджетов в разметке
Ваш первый диджит: HelloWorld
Диджит HelloWorld (Дубль 1: Основа)
Диджит HelloWorld (Дубль 3: Внедрение шаблона)

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