Методы управления жизненным циклом диджита

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

Например, класс _Widget предоставляет методы, которые можно переопределить, вызываемые перед тем, как диджит появится на экране, сразу после того, как диджит станет видимым, и непосредственно перед уничтожением диджита. Каждая из этих контрольных точек может оказаться очень полезной, когда необходимо выполнить синхронизацию с серверной частью приложения, явно разрушить некоторые объекты (чтобы избежать утечек памяти) или выполнить некоторые манипуляции с деревом DOM. Независимо от конкретных требований этот механизм вам уже не придется разрабатывать – он уже есть, и вы можете использовать его, когда в этом возникнет необходимость.


Чтобы продемонстрировать, что может предложить класс _Widget, ниже приводится пример 12.1, где объявляется простой класс, наследующий класс _Widget и переопределяющий ключевые методы, связанные с созданием и разрушением объекта, которые выводят отладочные сообщения в консоли Firebug. Учитывая сведения, которые приводятся в предыдущем разделе, вы могли бы назвать этот файл Foo.js и поместить его в каталог с именем модуля, то есть тем самым отобразить класс в пространство имен.

Ключевой особенностью этого примера, на которую следует обратить внимание, как и следовало ожидать, является факт переопределения методов класса _Widget. Рассмотрите их, а затем мы разберем каждый из методов более подробно.
Пример 12.1. Подкласс класса _Widget
dojo.require("dijit._Widget");
dojo.addOnLoad(function() {
dojo.declare(
"dtdg.Foo", // подкласс
dijit._Widget, // суперкласс
{
/* Методы создания в хронологическом порядке вызова */
constructor : function() {console.log("constructor");},
postMixInProperties : function()
{
console.log("postMixInProperties") ;
},
postCreate : function() {console.log("postCreate");},
/* Здесь можно разместить логику работы своего класса */
talk : function() {console.log("I'm alive!");},
/* Канонический деструктор, неявно вызывается
методом destoryRecursive() */
uninitialize : function() {console.log("uninitialize");}
}
);
});
foo = new dtdg.Foo();
foo.talk();
foo.destroyRecursive(); /* Вызвать все методы uninitialized */

Запустив этот пример, вы должны увидеть в консоли Firebug следующее:
constructor
postMixInProperties
postCreate
I'm alive!
uninitialize.



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

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

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