2012-06-03 3 views
1

J'ai un problème avec la création d'objets Ember à partir d'une source de données JAX ajax. Si je crée l'objet manuellement, cela fonctionne parfaitement et la vue est mise à jour. Si les données elles-mêmes proviennent d'un appel de données JAX ajax, cependant, cela ne fonctionne pas. Si j'inspecte les objets résultants, les objets de modèle Ember n'obtiennent pas les propriétés getter et setter correctes. Est-ce que quelqu'un sait pourquoi cela se produit?Impossible de créer un objet Ember à partir de JSON

App.AlbumView = Ember.View.extend({ 
    templateName:'album', 
    albums:[], 
    getAll:function() { 
     var self = this; 

     //This works! 
     self.albums.push(App.Album.create({title: 'test', artist: 'test'})); 

     $.post('/Rest/list/album',null,function(data) { 
      $.each(data, function (index, item) { 

       //This does not work?!? 
       self.albums.push(App.Album.create(item)); 
      }); 
     }, 'json'); 
    } 
}); 
+0

Veuillez faire une alerte sur l'élément pour voir quelle est la sortie. alerte (élément); –

+0

Y a-t-il une raison pour laquelle vous utilisez une requête POST plutôt qu'un GET pour obtenir des données du serveur? –

+0

Pouvez-vous mettre en place un JSfiddle au moins des bits qui fonctionnent pour que je puisse y jeter un coup d'œil? Je suis intéressé mais je ne connais pas assez le reste de votre configuration pour comprendre le problème complètement. –

Répondre

2

Vous devriez toujours utiliser des braises get('variableName') et méthodes set('variableName', newValue) lors de l'accès des variables d'instance d'une vue. Des choses étranges ont tendance à se produire si vous ne le faites pas.

+0

Les vues n'implémentent pas get et set. Lorsque j'essaie de les appeler, j'obtiens des erreurs «pas de telle fonction». –

+0

Les vues implémentent get et set car ces méthodes sont définies dans Ember.Observable, que Ember.View étend (via Ember.Object). Exemple: http://jsfiddle.net/zentralmaschine/uh74U/1/ – zentralmaschine

+0

Je vois. Étrange. Eh bien, cela a semblé fonctionner lorsque j'ai déplacé la collection vers un ArrayController accessible à l'échelle mondiale, et je suppose que l'utilisation de get et set fait la différence. Donc j'accepte la réponse. Je vais essayer de déboguer les problèmes de vue séparément, alors. –

Questions connexes