I think this is the cleanest way to inject a dynamic template based on a scope property
angular.module('app')
.directive('dynamic-template', function () {
return {
template:'',
restrict: 'E',
link: function postLink(scope) {
scope.template = 'views/dynamic-'+scope.type+'.html';
}
};
})