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