2013-10-06 7 views
0

Quelqu'un peut-il m'aider à comprendre pourquoi this.get('property_1') est toujours nul? Et comment puis-je le réparer?Les propriétés de ma vue ne peuvent pas être sauvegardées

App.SomeView = Em.View.extend({ 
    property_1: null, 

    didInsertElement: function() { 
     this.scheduleRefresh(); 
    }, 

    scheduleRefresh: function(){ 
     Ember.run.scheduleOnce('afterRender', this, this.refresh); 
    }.observes('controller.filter_params'), 

    refresh: function(){ 

     if (!this.get('property_1')) { 
      this.set('property_1', 'Hello'); 
     } 
    } 
}); 

Merci!

+0

pouvez-vous configurer un jsbin? à partir de votre code posté, il n'est pas très clair – intuitivepixel

+0

Malheureusement, je ne peux pas Ce sera beaucoup de code. Mais j'ai réduit le code à mon exemple. Lorsque la méthode mise à jour 'controller.filter_params' est mise à jour, refresh est exécuté. Mais entre les courses ma valeur de propriété ne pas enregistré –

Répondre

1

Le code que vous avez ci-dessus fonctionne très bien. Take a look at this jsfiddle. Est-il possible que vous essayez de récupérer la propriété vue property_1 à partir du contrôleur? Si c'est le cas, vous voudriez définir la propriété sur le contrôleur et vous lier à la vue.

+0

Le code sur jsfiddle (http://jsfiddle.net/87hPk/) a le même problème (j'ai ajouté console.log et il a écrit 'null') Il semble que ce soit un malentendu de mon côté. Que dois-je faire pour obtenir la valeur de la propriété dans la fonction 'refresh'? –

+0

Le problème dans cet exemple est que vous consignez la propriété avant qu'elle ne soit définie. Si vous déplacez la trace au-dessous de l'instruction 'if', elle doit enregistrer la valeur souhaitée. – ahmacleod

Questions connexes