Angular Component

Location: app/assets/javascripts/components.

Basic pattern

A component shouldn’t modify any data or DOM that’s out of its scope. All communication should go via bindings. One-way binding should be preferred over two-way binding.
Set controllerAs: "vm".templateUrl: should be preferred over template: but at the moment it’s impossible to test that component’s HTML is generated correctly if templateUrl: is used. So temporarily template: should be used instead of templateUrl:.