Angularjs observa cambio en el alcance de los padres.

Estoy escribiendo una directiva y necesito ver el alcance de los padres para un cambio. No estoy seguro de si estoy haciendo esto de la manera preferida, pero no funciona con el siguiente código:

  scope.$watch(scope.$parent.data.overlaytype,function() {
    console.log("Change Detected...");
  })

Esto inició sesión en la carga de la ventana, pero nunca más, incluso cuando se cambia overlaytype.

Como puedo veroverlaytype ¿por un cambio?

Edit: aquí está la directiva completa. No estoy completamente seguro de por qué tengo un niño alcance

/* Center overlays vertically directive */
aw.directive('center',function($window){
  return {
    restrict : "A",
    link : function(scope,elem,attrs){

      var resize = function() {
        var winHeight = $window.innerHeight - 90,
            overlayHeight = elem[0].offsetHeight,
            diff = (winHeight - overlayHeight) / 2;
            elem.css('top',diff+"px");
      };

      var watchForChange = function() {
        return scope.$parent.data.overlaytype;
      }
      scope.$watch(watchForChange,function() {
        $window.setTimeout(function() {
          resize();
        }, 1);
      })

      angular.element($window).bind('resize',function(e){
        console.log(scope.$parent.data.overlaytype)
        resize();
      });
    }
  };
});

Respuestas a la pregunta(5)

Su respuesta a la pregunta