Пакет: событие
Данные для событий свойства
Класс event.PropertyEvent
задает объекты данных о событиях, переданные прослушивателям этих предопределенных событий свойства:
PreGet
PostGet
PreSet
PostSet
Предопределенные события свойства позволяют прослушивателям ответить на изменения, внесенные в значения свойств. Для получения дополнительной информации смотрите, Прислушиваются к Изменениям в Значениях свойств.
Класс event.PropertyEvent
является изолированным подклассом event.EventData
(то есть, вы не можете разделить на подклассы event.PropertyEvent
). Конструктор класса является частным. MATLAB® создает объект event.PropertyEvent
передать прослушивателям событий свойства.
Класс event.PropertyEvent
является классом handle
.
Изолированный | tRUE |
ConstructOnLoad | tRUE |
HandleCompatible | tRUE |
RestrictsSubclassing | tRUE |
Для получения информации об атрибутах класса см. Атрибуты класса.
Задайте класс propEventClass
с
GetObservable
PropOne
и атрибутами 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
.
Свойство Source
объекта event.PropertyEvent
содержит объект meta.property
для PropOne
. Доступ
к свойству meta.property
Name
получить имя свойства, на котором инициировано событие. Включите имя свойства, когда коллбэк обработает несколько свойств.
Свойство EventName
объекта event.PropertyEvent
содержит имя события. Чтобы обработать несколько событий свойства от коллбэка, включите имя события.
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"