> So in theory, for the other case I linked (contextmenu), we could create a map-event directive to encapsulate the call to apply (as ng-click does), Such a directive would be re-usable.

That wouldn't help us for the context menu directive. Because we don't register the contextmenu listener through HTML markup.