Your adding your script to your page, but you have no clue when it is actually fetched and parsed. It could be waiting for the server or not be parsed in time for Angular to register it before calling it. You would have to set a deffered and manage callbacks for when your script it loaded and resolve promises to let angular know when everything is good to continue. Its a bit more work.
Also since your app is already loaded, you would need to use $controllerProvider.register
to register your controller after the fact.
If you don't want to do the work (I would only recommend doing it yourself as a way to learn how it all works), there are tons of solutions for what you are trying to attempt. Try looking around for "angularjs lazy load" or check out this: https://github.com/nikospara/angular-require-lazy