Использование $parse внутри link директивы это нормальная практика, но надо понимать зачем вы это делаете.
В вашем примере достаточно parse заменить на биндинг проперти в скоупе. Единственная причина по которой тут используется $parse - микрооптимизация для уменьшения количества ватчеров.
updated
Поправка, единственная причина почему тут используется $parse вместо изолированного скоупа - то что у ngModel уже есть изолированный скоуп и ангуляр банально не даст создаться двум директивам с изолированными скоупами на одном элементе.