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