Why Ember.js Rocks - Data Binding 2

HTML

<link rel="stylesheet" href="//cdn.jsdelivr.net/foundation/4.3.1/css/foundation.min.css">
<script src="//cdnjs.cloudflare.com/ajax/libs/handlebars.js/1.0.0-rc.4/handlebars.min.js"></script>
<script src="http://builds.emberjs.com.s3.amazonaws.com/ember-1.0.0-rc.6.1.min.js"></script>
<script type="text/x-handlebars">
    {{controllers.clock.seconds}}
    {{controllers.monitor.allDone}}
</script>

CSS

body { margin: 3em; }

JavaScript

App = Ember.Application.create();

App.ApplicationController = Ember.ObjectController.extend({
    needs: ['clock', 'monitor'],
    isFinished: false,
    isFinishedObserver: function() {
        // this observer will fire every time, the isFinished property will only
        // trigger an event to tell its observers it has changed one time       
        if(this.get('controllers.clock.seconds') > 10) {
            this.set('isFinished', true);
        }
    }.observes('controllers.clock.seconds')
});

App.ClockController = Ember.Object.extend({
    init: function() {
        var self = this;
        
        setInterval(function() {
           self.set('seconds', self.get('seconds') + 1);
        }, 200);
    },
    seconds: 0
});

App.MonitorController = Ember.ObjectController.extend({
    needs: ['application'],
    allDone: function() {
         console.log('!! only fired once'); // well twice, because of the initial false value
         return this.get('controllers.application.isFinished')   
    }.property('controllers.application.isFinished')
});