Я знаю, что вы можете отвязать часы $так:
var listener = $scope.$watch("tag", function () {});
// ...
listener(); // would clear the watch
но вы можете отвязать часы в объявлении функции часов. Итак, после того, как часы выполняются один раз, он откручивает себя? Что-то вроде:
$scope.$watch("tag", function () {
unbindme()
});