Truffle since release 2.0.8 delays the initialization of the global variable web3
after the load event, so this variable
is not available during angular bootstrap, inside a .config() section, inside providers and neither inside the controllers
initialized at load time and related injected services.
Accessing to the web3 variable inside a setTimeout() call could be a solution for simple projects but the only way to be sure that web3 is initialized is to postpone the angular bootstrap.
Looks at the code below:
<!DOCTYPE html>
<html>
<head>
...
</head>
<body ng-cloak>
...
<script>
window.addEventListener('load', function() {
angular.bootstrap(document, ['sampleApp'])
})
</script>
</body>
</html>
Notice that there is no ng-app
directive, the bootstrap is delegated to the small script in the body section.
Notice also the ng-cloack
directive, it avoids the rendering of the raw page template.