OK, I just realised that if you are cloning the transclude then a new scope **is** defined that is bound correctly and that it also sets up an event handler to destroy the scope when the element gets destroyed so this fixes this problem. We just remove passing in a scope to the $transclude function altogether.