Ember.js dà il ciclo infinte quando si utilizza il tag {{#each}} in modello
-
28-10-2019 - |
Domanda
Usando Ember.js ottengo un ciclo infinito con il seguente codice:
Controller:
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')
})
Visualizzazione:
App.ActivityDetailsView = Em.View.extend({
templateName : 'activity-details',
activityBinding : 'App.activityDetailsController.activity',
dataBinding : 'App.activityDetailsController.data'
})
Modello:
<script type="text/x-handlebars" data-template-name="activity-details">
<div id="info">
{{#each data}}
{{key}}: {{value}}<br />
{{/each}}
</div>
</script>
Quando si tenta di caricare questa pagina, la funzione "dati" nel controller viene chiamata infinita.
Se rimuovo il blocco {{#each}} {{/ciascuno}} dalla vista, non vi è alcun problema e usando {{data.length}} nel modello fornisce l'output corretto.
Qualche idea per cui questo si diffonde all'infinito? Se rimuovo "attività" dalla chiamata di proprietà, è lo stesso.
Grazie,
Soluzione
Rendi la tua proprietà "dati" cacheable()
. Vedere La risposta di Ebryn a una domanda correlata per il motivo.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow