angular directiveにてshowされたときに発火するようにするには
show:booleanをdirectiveに渡して、その値を$watch。show:trueで発火されたら$watch解除というようにした。
JavaScript - AngularJSのDirectiveを理解する. - Qiita
javascript - AngularJS: Remove $watch from ng-repeat - Stack Overflow
$watchしたのを解除
javascript - AngularJS : Clear $watch - Stack Overflow
Wait for data in controller before link function is run in AngularJS directive - Stack Overflow
AngularJS - directiveにpromiseを渡す - Qiita
javascript - Trigger a function in a child directive from it's parent [angularJS] - Stack Overflow