Stopping Dynamic Actions using apex.da.cancelEvent
Update: Nick Buytaert wrote a follow-up article on the
apex.da.resume function. I suggest reading it along with this article in case you need to resume a Dynamic Action (which is especially useful for plugins).
apex.da.cancelEvent. Here's an example of how to use it:
Suppose you have a page with two items,
P1_Y, and a button on P1. When the user clicks the button the Dynamic Action (DA) needs to set
P1_X = X and
P1_Y = Y. The DA setup will look like the following:
When you click the button
P1_Y are set to
Now suppose that after
P1_X is set you wanted to stop all other actions in the DA (in this case setting
P1_Y). There's no way to declaratively do this. Instead you must use the
True Action to the existing DA with sequence
15 (so its between the two other actions). In the code section use:
apex.da.cancelEvent.call(this); Be sure to uncheck the
Fire On Page Load option. The updated DA will look like image below (the new action is highlighted).
If you refresh P1 and click the button associated to this DA only
P1_X will be set. The third action in this DA will not be executed.
The above example probably isn't the best use case for leveraging
apex.da.cancelEvent however it does highlight its functionality. It is useful if you create your own custom confirm notice or some other process that determines if the rest of the actions in a DA can occur.
Note: You'll notice that I used the additional
call() function when calling
apex.da.cancelEvent in the action. Calling it defines the value of
this in the function call as it is required in the
cancelEvent function. For more information please read the JS