Пакет: событие
Данные для событий свойства
event.PropertyEvent класс задает объекты данных о событиях, переданные прослушивателям этих предопределенных событий свойства:
PreGet
PostGet
PreSet
PostSet
Предопределенные события свойства позволяют прослушивателям ответить на изменения, внесенные в значения свойств. Для получения дополнительной информации смотрите, Прислушиваются к Изменениям в Значениях свойств.
event.PropertyEvent класс является изолированным подклассом event.EventData (то есть, вы не можете разделить на подклассы event.PropertyEvent). Конструктор класса является частным. MATLAB® создает event.PropertyEvent возразите, чтобы передать прослушивателям событий свойства.
event.PropertyEvent классом является handle класс.
Sealed | true |
ConstructOnLoad | true |
HandleCompatible | true |
RestrictsSubclassing | true |
Для получения информации об атрибутах класса см. Атрибуты класса.
Задайте propEventClass класс с PropOne
GetObservable и SetObservable атрибуты, разрешающие наблюдение за событиями свойства. Конструктор класса добавляет прослушиватели для этих событий.
classdef propEventClass < handle % Class to observe property events properties (GetObservable,SetObservable) PropOne string = "default" end methods function obj = propEventClass addlistener(obj,'PropOne','PreGet',@propEventHandler); addlistener(obj,'PropOne','PostSet',@propEventHandler); end end end
propEventHandler функция служит коллбэком для PreGet и PostSet события.
event.PropertyEvent объект Source свойство содержит meta.property объект для PropOne. Доступ к meta.property
Name свойство получить имя свойства, на котором инициировано событие. Включите имя свойства, когда коллбэк обработает несколько свойств.
event.PropertyEvent объект EventName свойство содержит имя события. Чтобы обработать несколько событий свойства от коллбэка, включите имя события.
function propEventHandler(~,eventData) switch eventData.Source.Name % Get property name case 'Prop1' switch eventData.EventName % Get the event name case 'PreGet' fprintf('%s\n','***PreGet triggered***') case 'PostSet' fprintf('%s\n','***PostSet triggered***') disp(eventData.AffectedObject.(eventData.Source.Name)); end end end
Ссылка на PropOne значение свойства приводит к ответу от propEventHandler к PreGet событие.
obj = propEventClass; obj.PropOne
***PreGet triggered***
ans =
"default"Присвоение PropOne свойство приводит к ответу от propEventHandler к PostSet событие.
Поскольку коллбэк заставляет значение свойства отображать новое значение после PostSet событие, PreGet событие инициировано. Кроме того, потому что оператор присваивания не отключен точкой с запятой, MATLAB заставляет значение свойства отображать объект в командном окне, которое инициировало PreGet событие снова.
obj.PropOne = "New string"***PostSet triggered***
***PreGet triggered***
New string
obj =
***PreGet triggered***
propEventClass with properties:
PropOne: "New string"