Pregunta

Usando Ember.js obtengo un bucle interminable con el siguiente código:

Controlador:

App.activityDetailsController = Em.Object.create({
  activityBinding :     'App.navController.selectedActivity',

  data : function(){
    var things = new Array();
    if(this.activity){
      var info = this.activity.get('info');
      var len = info.length;
      for(var i=0; i<len; i++){
        for(prop in info[i]){
          things.push({"key": prop, "value" : info[i][prop]});       
        }
      }
    }

    return things;
  }.property('activity')    
})

Vista:

App.ActivityDetailsView = Em.View.extend({
  templateName :        'activity-details',
  activityBinding :     'App.activityDetailsController.activity',
  dataBinding :         'App.activityDetailsController.data'

})

Modelo:

  <script type="text/x-handlebars" data-template-name="activity-details">
    <div id="info">
      {{#each data}}
          {{key}}: {{value}}<br />
      {{/each}}
    </div>
  </script>

Al intentar cargar esta página, la función de 'datos' en el controlador se llama sin cesar.

Si elimino el bloque {{#each}}} {{/cada uno}} de la vista, no hay problema y usando {{data.length}} en la plantilla da la salida correcta.

¿Alguna idea por qué este buceo infinitamente? Si elimino la 'actividad' de la llamada de propiedad, el problema es el mismo.

Gracias,

¿Fue útil?

Solución

Hacer su propiedad de "datos" cacheable(). Ver Respuesta de Ebryn a una pregunta relacionada por la razón por la cual.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top