>>Why did you change from onblur to focus ?
>
>By investigating it a bit more I found that in the "working" form changing controls in the views that are supposed to trigger dirty state and don't have the no-dirty-check directive applied still don't make the form $dirty = true. So, it's a two-fold problem now.
Not sure what you have wrong. Your binding syntax in the directive didn't work for me but this does:
element.bind('blur', function () {
ctrl.$setPristine();
scope.$apply();
})(scope.$apply() just there to update any validation markings)