Remove the $controllerProvider.allowGlobals flag #15349
Description
Note: for support questions, please use one of these channels: https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#question. This repository's issues are reserved for feature requests and bug reports.
Do you want to request a feature or report a bug?
A breaking change request.
What is the current behavior?
$controllerProvider.allowGlobals
is set to false
by default. Setting it to true
allows $controller
to find controller constructors on window
which is discouraged.
If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem via https://plnkr.co or similar (template: http://plnkr.co/edit/tpl:yBpEi4).
What is the expected behavior?
$controllerProvider.allowGlobals
flag should be removed.
What is the motivation / use case for changing the behavior?
Relying on global controller constructors is an anti-pattern and can mask bugs as you can't always control all the global elements on the page. We've been discouraging this pattern for some time.
Which versions of Angular, and which browser / OS are affected by this issue? Did this work in previous versions of Angular? Please also test with the latest stable and snapshot (https://code.angularjs.org/snapshot/) versions.
All.
Other information (e.g. stacktraces, related issues, suggestions how to fix)