Lightning has been enhanced with a way to call a controller function after this question was posted in 2014.
You can declare the target controller function using the tag aura:method like below:
<aura:method name="barMethod" action="{!c.bar}"
description="bar controller function" />
Then you can reference it on the controller:
({
bar : function(component, event, helper) {
// Do something cool
},
foo : function(component, event, helper) {
// This is how you call bar() from here
component.barMethod();
}
})
If you need to pass a parameter other than those 3, you'll need to add an aura:attribute tag to the aura:method:
<aura:method name="barMethod" action="{!c.bar}"
description="bar controller function">
<aura:attribute name="param1" type="the type" default="default value" />
</aura:method>
And the bar function needs to extract the parameter from the event like below:
var params = event.getParam( 'arguments' );
if( params ) {
var param1 = params.param1;
// rest of the code here
}
See more at: Calling Component Methods