To be more dynamic my directive I decided to include the category field that makes the selection of the type of template to be displayed. As it's just a select I thought of using ng-switch instead of multiple html files.
Plunker: link
index.html
<div ng-controller="MainCtrl">
<sg-combo
selected-item="selectedItem" categoria="filtro">
</sg-combo>
{{selectedItem}}
script.js
var app = angular.module('plunker', []); app.controller('MainCtrl', function($scope) { $scope.selectedItem = null; $scope.$watch('selectedItem',function(item){ if (item != null){ alert(item.nome); // Não exibe o alert qdo está com o switch } }) }); app.directive('sgCombo', function(){ function link(scope, elem, attrs){ scope.dados = [ {'codigo':1, 'nome':'teste1'}, {'codigo':2, 'nome':'teste2'}, {'codigo':3, 'nome':'teste3'} ]; } return { restrict: 'E', scope: { selectedItem: '=', categoria: '@' }, link: link, templateUrl:"sg-combo.html" } })
sg-combo.html
<div ng-switch="categoria">
<div ng-switch-when="filtro" class="col-sm-4 control-label">
<div class="col-sm-4 control-label">
<label>{{label}}</label>
<select ng-model="selectedItem" ng-options="item.nome for item in dados" class="form-control"></select>
</div>
</div>
<div ng-switch-when="anexo" class="col-sm-4 control-label">
<div class="col-sm-4 control-label">
<label>{{label}}</label>
<select ng-model="selectedItem" ng-options="item.nome for item in dados" class="form-control"></select>
</div>
</div>
</div>