Динамические свойства поддерживают набор свойств и получают события, таким образом, можно задать прослушиватели для этих свойств. Прослушиватели связаны с конкретным динамическим свойством, для которого они заданы.
Если вы удаляете динамическое свойство, и затем создаете другое динамическое свойство с тем же именем, прослушиватели не отвечают на события, сгенерированные новым свойством. Прослушиватель, заданный для динамического свойства, которое было удалено, не вызывает ошибку, но коллбэк прослушивателя никогда не выполняется.
События набора свойств и Запроса предоставляют больше информации о том, как задать прослушиватели для этих событий.
Чтобы ответить на сложение и удаление динамических свойств, присоедините прослушиватели объектов, содержащих динамические свойства. dynamicprops
класс задает события с этой целью:
PropertyAdded
— Инициированный, когда вы добавляете динамическое свойство в объект, выведенный из dynamicprops
класс.
PropertyRemoved
— Инициированный, когда вы удаляете объект или meta.DynamicProperty
объект сопоставлен с динамическим свойством.
ObjectBeingDestroyed
— Инициированный, когда объект уничтожается. Это событие наследовано от handle
класс.
Эти события сделали, чтобы общественность послушала доступ (ListenAccess
припишите), и частный уведомляют доступ (NotifyAccess
припишите).
PropertyAdded
и PropertyRemoved
события передают event.DynamicPropertyEvent
возразите против коллбэков прослушивателя. Объект данных о событиях имеет три свойства:
PropertyName
— Имя динамического свойства, которое добавлено или удалено
Source
— Обработайте к объекту, который является источником события
EventName
— Имя события (PropertyAdded
, PropertyRemoved
, или ObjectBeingDestroyed
)
Предположим, что у вас есть приложение, которое создает динамическое свойство при определенных обстоятельствах. Вы хотите:
Установите значение скрытого свойства к true
когда свойство под названием SpecialProp
добавляется.
Установите значение скрытого свойства к false
когда SpecialProp
удален.
Используйте event.DynamicPropertyEvent
данные о событиях, чтобы определить имя свойства и добавлено ли это или удалено.
DynamTest
класс выводит из dynamicprops
. Это задает скрытое свойство, HiddenProp
.
classdef DynamTest < dynamicprops properties (Hidden) HiddenProp end end
Задайте функцию обратного вызова, которая использует EventName
свойство данных о событиях определить, добавлено ли свойство или удалено. Получите имя свойства от PropertyName
свойство данных о событиях. Если динамическое свойство называют SpecialProp
, измените значение скрытого свойства.
function DyPropEvtCb(src,evt) switch evt.EventName case 'PropertyAdded' switch evt.PropertyName case 'SpecialProp' % Take action based on the addition of this property %... %... src.HiddenProp = true; disp('SpecialProp added') otherwise % Other property added % ... disp([evt.PropertyName,' added']) end case 'PropertyRemoved' switch evt.PropertyName case 'SpecialProp' % Take action based on the removal of this property %... %... src.HiddenProp = false; disp('SpecialProp removed') otherwise % Other property removed % ... disp([evt.PropertyName,' removed']) end end end
Создайте объект DynamTest
класс.
dt = DynamTest;
Добавьте прослушиватель для обоих PropertyAdded
и PropertyRemoved
события.
lad = addlistener(dt,'PropertyAdded',@DyPropEvtCb); lrm = addlistener(dt,'PropertyRemoved',@DyPropEvtCb);
PropertyAdded
Выполнение обратного вызова событияДобавление динамического свойства инициировало PropertyAdded
событие. Этот оператор добавляет динамическое свойство в объект и сохраняет возвращенный meta.DynamicProperty
объект.
ad = addprop(dt,'SpecialProp');
Сложение динамического свойства заставляет прослушиватель выполнять свою функцию обратного вызова, DyPropEvtCb
. Функция обратного вызова присваивает значение true
к HiddenProp
свойство.
dt.HiddenProp
ans = 1
PropertyRemoved
Выполнение обратного вызова событияУдалите динамическое свойство путем вызова delete
на meta.DynamicProperty
объект, который возвращен addprop
метод. Удаление meta.DynamicProperty
возразите инициировал PropertyRemoved
событие.
Удалите meta.DynamicProperty
объект, возвращенный при добавлении динамического свойства SpecialProp
.
delete(ad)
Коллбэк выполняется:
SpecialProp removed
Значение HiddenProp
теперь false
.
dt.HiddenProp
ans = 0
meta.DynamicProperty
ОбъектыМожно получить meta.DynamicProperty
объект для динамического свойства с помощью findprop
. Используйте findprop
если вам не возвратил объект addprop
.
ad = findprop(dt,'SpecialProp');