简体   繁体   中英

How can I observe data-attributes of ZK elements?

I want to execute something in backend, when the data-attribute of a ZK element changes.
There's a MutationObserver in Javascript, is there something similar in ZK that I can use?

I already checked the ZK Events class but there doesn't seem to be an event that listens to attribute changes.

There is no event listener or similar by default that would be triggered when changing a clientAttribute on a component.

Where does the change originate from? Is it an event happening at client-side? Or a change done on the component object in Java? Could you explain the use case? there might be a different way to achieve it:)

Edit: technical solution after exchanges. firing an event from client to server side: https://www.zkoss.org/wiki/ZK_Client-side_Reference/Communication/AU_Requests/Client-side_Firing#Fire_Event_Directly_to_Server

I'd recommend firing a "onCustom" event instead (any event name starting by "on"+yourEventName ). You will also need to use toServer:true in the event optional arguments to have it fired to the server directly. this one is a good option: zAu.send(new zk.Event(wgt, "onFoo", {foo: 'my data'}, {toServer:true})); where wgt is the widget object, "onFoo" is the custom event name, {foo: 'my data'} is the payload, if you need to send anything back to the server, and {toServer: true} is the optional arguments, with the toServer entry

the issue with firing onChange is that is is a default event sent by default actions. there is already behaviors tied to onChange on most components. you might trigger a default workflow which expects a specific payload and create an error situation. By sending a onCustomName (whathever it is, just not a default event) event, you are sure to only trigger the listener in by invoking the zAu.send

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM