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