 <p>I would add a ng-model on your select and then add a watch in your directive. Pass your variable into the directive and output your desired result. Pseudo code:</p> <pre><code>&lt;select ng-model="myList" class="ng-scope ng-pristine ng-invalid ng-invalid-required"&gt; &lt;option value="" selected="selected" class=""&gt;Seleccione un estado&lt;/option&gt; &lt;/select&gt; &lt;span state selectedItem="myList"&gt;&lt;/span&gt; </code></pre> <p>and your directive might look like:</p> <pre><code> directive('state', ['$http', function($http){ return { restrict: 'A', scope: { myList: '=myList' }, link: function(scope, element, attrs) { scope.$watch('myList', function (newValue, oldValue) { console.log(changed); } } } }]) </code></pre>