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