$http.get() renvoie une promesse. Le code contenu dans ton success() sera réalisé quand le résultat de la requête sera appelé.
Ce que fait le code à l'heure actuelle :
- envoie une requête GET pour récupérer le fichier JSON.
- afficher le console.log($scope.templateData); hors $scope.templateData n'existe pas
- lance la fonction de succès
- set le contendu du JSON dans le scope
- affiche le scope.
C'est donc normal si ton console.log qui est en dehors n'affiche pas la bonne valeur.