Пакет: событие
Данные для событий свойств
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"