Few things:
- Your controller exposes startChange function on the scope, so you need to call it on the scope, i.e. 'scope.startChange()' from within the directive and not 'startChange()'
- Your confirmation directive uses isolate scope which is great if you know what youre doing, but in essence it is cutting you off from the parents scope on which you are trying to call a function
You got 3 options in this case
- Use Scope $emit/$broadcast to share state
- use isolate scope and '&' syntax to execute an expression in the context of parent scope -- example http://plnkr.co/edit/8UEDpoS6ie5qtFc8e08h?p=preview
- not use isolate scope and execute the startChange function on the scope of the directive which is the same as scope of the controller -- example: http://plnkr.co/edit/h1T2QNOL7wGNG0eprLMC?p=preview