Vincular clase alternar al evento de desplazamiento de ventana

Cuando un usuario desplaza la ventana de su navegador debajo de cierto punto, estoy cambiando la clase de la división #page.

Lo que he hecho hasta ahora funciona bien:

http://jsfiddle.net/eTTZj/29/

<div ng-app="myApp" scroll id="page">

    <header></header>
    <section></section>

</div>

app = angular.module('myApp', []);
app.directive("scroll", function ($window) {
    return function(scope, element, attrs) {
        angular.element($window).bind("scroll", function() {
             if (this.pageYOffset >= 100) {
                 element.addClass('min');
                 console.log('Scrolled below header.');
             } else {
                 element.removeClass('min');
                 console.log('Header is in view.');
             }
        });
    };
});

(cuando se desplazan por la ventana debajo del encabezado, 100 px, la clase cambia)

Aunque, corrígame si me equivoco, siento que esta no es la forma correcta de hacerlo con Angular.

En su lugar, presumí que el mejor método para hacer esto sería utilizar ng-class y almacenar un valor booleano en el alcance. Algo como esto:

<div ng-app="myApp" scroll id="page" ng-class="{min: boolChangeClass}">

    <header></header>
    <section></section>

</div>

app = angular.module('myApp', []);
app.directive("scroll", function ($window) {
    return function(scope, element, attrs) {
        angular.element($window).bind("scroll", function() {
             if (this.pageYOffset >= 100) {
                 scope.boolChangeClass = true;
                 console.log('Scrolled below header.');
             } else {
                 scope.boolChangeClass = false;
                 console.log('Header is in view.');
             }
        });
    };
});

Aunque esto no es dinámico, si cambio el valor de scope.boolChangeClass en la devolución de llamada de desplazamiento, entonces la clase ng no se está actualizando.

Entonces, mi pregunta es: ¿cuál es la mejor manera de cambiar la clase de # page, utilizando AngularJS, cuando el usuario se desplaza por debajo de un cierto punto?

Respuestas a la pregunta(6)

Su respuesta a la pregunta