Chapter 9: Trimming your watch list with lazy binding

HTML

<script src="https://code.angularjs.org/1.3.2/angular.min.js"></script>
<div ng-app="myApp">
    <div ng-controller="Ctrl">
        <input ng-model="draft.year" />
        {{ ::verySlowMethod('lazy') }}
        {{ verySlowMethod('normal') }}
    </div>
</div>

JavaScript

angular.module('myApp', [])
.controller('Ctrl', function($log, $scope, $timeout) {
    var cnt = 0;
    $scope.verySlowMethod = function(desc) {
        // simulate slow method
        $timeout(function() {
            window.alert(desc);
            $log.log('slow method completed', desc);
        }, 5000);
        // ensure different value every time it is invoked
        return 0;
    };
});