Your directive works fine for me:
~/angular_js_projects/9app$ tree
.
├── app.css
├── app.js
├── bootstrap
<snip>
├── index.html
└── myCallout.html
app.js:
var app = angular.module('myApp', []);
app.directive('myCallout', function() {
return {
templateUrl: 'myCallout.html'
}
});
myCallout.html:
<div>myCallout.html</div>
index.html:
<!DOCTYPE html>
<html ng-app="myApp">
<head>
<title>AngularJS</title>
<meta charset="UTF-8"> <!-- For html5 (default is UTF-8) -->
<meta name="viewport" content="width=device-width, initial-scale=1"> <!-- For Bootstrap -->
<!-- Bootstrap CSS with glyphicon fonts in bootstrap/fonts/ -->
<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<h3>Recent</h3>
<div my-callout></div>
<!-- Angular -->
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
<!-- App Script -->
<script src="app.js"></script>
</body>
</html>
With this directory structure:
~/angular_js_projects/9app$ tree
.
├── app.css
├── app.js
├── bootstrap
<snip>
├── index.html
└── templates
└── myCallout.html
then app.js looks like this:
var app = angular.module('myApp', []);
app.directive('myCallout', function() {
return {
templateUrl: 'templates/myCallout.html'
}
});