Array.forEach.calls replaced by angular.forEach
Using feature detection instead of browser detection (good practice)
No need for setting data, because you are using element.extra_data anyway instead.