Пакет: событие
Данные для событий свойства
Класс event.PropertyEvent задает объекты данных о событиях, переданные прослушивателям этих предопределенных событий свойства:
PreGet
PostGet
PreSet
PostSet
Предопределенные события свойства позволяют прослушивателям ответить на изменения, внесенные в значения свойств. Для получения дополнительной информации смотрите, Прислушиваются к Изменениям в Значениях свойств.
Класс event.PropertyEvent является изолированным подклассом event.EventData (то есть, вы не можете разделить на подклассы event.PropertyEvent 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"