 <p>Some changes you should do to run the controller function.</p> <p>Here is the working plunker <a href="http://plnkr.co/edit/tAssYy2Zwh1BkVPYidRN?p=preview" rel="nofollow">Plunker</a></p> <ol> <li><p>You were using third party directive that doesn't provide ng-change on that. Yes but it provides <code>on-tag-added="change1(modeldisplay)</code>. So <code>ng-change</code> was not working.</p></li> <li><p>You have passed function in the <strong>change</strong> attribute of you <code>my-directive</code> and again there was another <strong>change function</strong> in your directive scope, that was creating misunderstanding.</p></li> <li><p>You were accessing passed function using <strong>scope</strong> but you have not mentioned that in directive <strong>isolated scope</strong>. That's why that passed function was not accessible in directive scope.</p></li> </ol>