Plantilla de vista Ember como una propiedad computada

Tengo problemas para actualizar la propiedad de la plantilla en una vista de Ember cuando se trata de una propiedad calculada.

Ember compila la plantilla correctamente cuando la vista se carga por primera vez y se devuelve como una propiedad, pero la propiedad computada de la plantilla no se actualiza cuando la dependencia se modifica posteriormente.

Aquí hay un ejemplo en JSFiddle:http://jsfiddle.net/VkJC3/

App=Em.Application.create();

App.MyView = Em.View.extend({
    toggle: true
    ,template: function(){
        if (this.get('toggle')) {
            return Em.Handlebars.compile('toggle is true')
        } else {
            return Em.Handlebars.compile('toggle is false')
        }
     }.property('toggle')
});

theView= App.MyView.create();
theView.append('body');

Ember.run.later(function() {
    console.log('later');
    theView.set('toggle',false);
}, 2000);
​

Cualquier otra sugerencia sobre cómo lograr esto se agradece. Tal vez es mejor poner solo los ayudantes en una plantilla de manillares.

EDITAR:

Aquí hay un ejemplo más completo que muestra el Ember.CollectionView que contendrá el Ember.View anterior:http://jsfiddle.net/VkJC3/6/

Después de Ember.run.later, el primer elemento debe cambiar de tipo 1 a tipo 2, y actualizar la propiedad de la plantilla calculada.

App=Em.Application.create();

App.MyView = Em.CollectionView.extend({
    content: [
        Em.Object.create({type: 1, data:"Maybe item type 1 is a link"})
        ,Em.Object.create({type: 2, data:"And item type 2 is a header"})]

    ,itemViewClass: Em.View.extend({
        template: function(){
            if (this.get('content.type')==1) {
                return Em.Handlebars.compile('<a href="#">{{view.content.data}}</a>')
            } else if (this.get('content.type')==2) {
                return Em.Handlebars.compile('<h1>{{view.content.data}}</h1>')
            }
         }.property('content.type')
    })
});


theView= App.MyView.create();
theView.append('body');

Ember.run.later(function() {
    console.log('later');
    theView.get('content')[0].set('type',2);
}, 2000);
    ​

Respuestas a la pregunta(1)

Su respuesta a la pregunta