ftlabs / fruitmachine

View rendering engine
MIT License
247 stars 18 forks source link

Introduce `module.root` #44

Open wilsonpage opened 11 years ago

wilsonpage commented 11 years ago

I'm proposing we set a new reference on each module with a view, this would be referred to as root. this.root would refer to the outermost module in the view hierarchy.

This seems like a simple thing, but opens up a whole host of communication options. Modules are now able to listen to events that happen on the root module (the single point of contact with our app).

this.root.on('themechange', function(type) {
  this.classList.remove(this.theme);
  this.classList.add(this.theme = type);
});

then...

view.fire('themechange', 'dark');

More controversially this could be used to set a single shared models across multiple modules, if need be.

matthew-andrews commented 11 years ago

+1

wilsonpage commented 11 years ago

@matthew-andrews highlighted a concern that bubbling events could mean module event firing may cause strange 'rebounding' from the root node,

matthew-andrews commented 10 years ago

We have found ourselves in need for this after all :).