I see your point, but I'm not sure how one could implement a relationship between a mediator and a view without some form of tight coupling.
It will be a coupling. From the Mediator to the Component. Your Mediator will listen to events from the component and will call methods or set properties on it. There should however be no coupling from the component to the Mediator; i.e. shouldn't know anything about the Mediator.
The tightness of the coupling has everything to do about how well you encapsulate your component. The Mediator shouldn't be a puppeteer, knowing and controlling everything that goes on inside the component.
It shouldn't know, for instance that you're using a data grid instead of a combo box to display the data delivered to the component. Therefore it shouldn't reference
component.searchResultsGrid.dataProvider to set the data. Instead it should set a
bindable property on the component with a semantic name like
searchResults. Inside the component, the data grid would bind its dataProvider to the searchResults property. This leaves you free to change the component's implementation (to say a combo box instead of a data grid) without needing to also change the Mediator.
By the same token, the Mediator shouldn't be setting listeners on the sub-components of its view component. This is where the component typically needs to have a modicum of intelligence to encapsulate its own behavior. For instance, say that selecting an item in the data grid should enable some buttons, resize the grid and display a form alongside it for editing.
The Mediator doesn't need to play a part in this. A local handler in the data grid should trigger some code that resizes everything and enables the buttons. This code might be all done with binding expressions which is still code, just written in the handler of the MXML tag instead of a script block. Or it might be that the click handler on the grid triggers a local method that does the rearranging of things, and sets a bindable variable to the selected item cast to its appropriate type. And this property is what the Mediator should inspect if it gets an event saying the data needs to be shipped off to the server (say when the now enabled submit button is pressed).
-=Cliff>