Hi Andy,
as I can see in your log window, you are running the class Example::TopMenu within the Prototyper and not the application class Example::Application. Just try it again with the application class (or simply press Ctrl + F5) - then everything will work as expected.
Why does it not work when prototyping the top menu?
The reason for the bahavior is, that the ControllerClass is a autoobject which is removed by the garbage collecter when it is no more in use (= when you close the submenu) and it is created again when it is needed (= when you open the submenu).
In order to keep the autoobject within the memory and to prevent the Garbage Collector from deleting it, you will find a variable within the application class that keeps a permanent reference to the controller object.

As a result, the controller is kept in the memory the whole runtime of the application.
For more details, please have a look to the description of autoobjects - especially the section lifetime of autoobjects.
Best regards,
Manfred