For a simple light weight solution, my personal preference is to use events and pass the data along with the event.
This allows to communicate independent of the view hierarchy.
Here is a good package :
in the template which is responsible for letting the user select items do this :
EventEmitter.emit(‘itemSelected’, {
data: ‘selectedId’
});
From the template that wants to know what was selected do this :
EventEmitter.on(‘itemSelected’, function(data){
console.log('The item is ', data);
})
There are many other solutions, I don’t think there’s a ‘best’ way to do it. You can store selected item in Session, or a Local Collection, or even the URL, or use a ‘Flux’ pattern. It’s also possible that the parent/child templates can set values on each other directly. My preference is this basic event flow.