Itération sur Ember.js braise-Enregistrement des données des Tableaux
J'ai été me frappant la tête contre ce problème tous les jours, et je sens que je suis proche d'une solution, mais ne peuvent tout simplement pas tout à fait le faire se produire. Je suis à l'aide d'Ember.js avec Ember-Data et les appareils de l'adaptateur, finalement, la migration vers le RESTE de l'adaptateur. Le problème de base est ceci: j'ai des Sites et des Superviseurs, avec un plusieurs-à-plusieurs relation. Je tiens à présenter à l'utilisateur une boîte de sélection pour leur site/superviseur liaisons, triés par site, c'est à dire:
- Site 1 - Superviseur 1
- Site 1 - Superviseur 2
- Site 2 - Superviseur 1 (rappelez-vous, plusieurs-à-plusieurs)
- Site 2 - Superviseur 3
J'ai besoin de disputer ces deux ressources dans un seul tableau que je peux passer à une vue qui hérite (ou héritera) à partir de Braise.Sélectionnez. Actuellement, je suis d'essayer cela avec une méthode sur les Superviseurs contrôleur qui je suis en appelant "à plat", parce qu'il sera de retour aplatie tableau représentant ces relations. Le contrôleur est indiqué ci-dessous. Je suis en utilisant .find().alors() pour traiter les données après la promesse a été accomplie. Les données que je serai de retour apparaît pour contenir tous les quatre de mes montages, mais quand j'essaie tout de l'énumération des méthodes (notamment forEach), il se comporte comme si il a renvoyé le premier objet. J'ai essayé de parcourir l'objet de données ainsi que des données.get('contenu'). Je suis assez nouveau à la Braise, donc je vais peut-être à propos de ce mauvais de toute façon, mais peu importe, cela semble très étrange pour moi. Voici mon code:
App.SupervisorsController = Ember.ArrayController.extend({
flat: function(){
return App.Supervisor.find().then(function(data){
var c = data.get('content') ;
console.log(c) ; //<-- logs an object containing four records,
// with attribute "length" showing 4
// Great! (see below for log output)
console.log(c[0]) ; //<-- logs first record. Great!
console.log(c[1]) ; //<-- undefined (?!)
console.log(c[2]) ; //<-- undefined (?!)
console.log(c[3]) ; //<-- undefined (?!)
console.log(c.get('length')) ; //<-- 1 (not four?!)
return c ; //<-- eventually this will return the newly constructed array
}) ;
}
}) ;
Et voici le journal de sortie de la première console.log() appel
0: Object
1: Object
2: Object
3: Object
__ember1376005434256: "ember325"
__ember1376005434256_meta: Meta
_super: undefined
length: 4
__proto__: Array[0]
Pouvez-vous me dire ce que je suis en manque ici? Je ne peux pas comprendre comment accéder à chacun des quatre résultant des superviseurs.
Merci!
OriginalL'auteur Ben | 2013-08-09
Vous devez vous connecter pour publier un commentaire.
Il apparaît comme vous êtes accédant à la modèles avant la fin du chargement (Vous pouvez les voir dans la propriété, isUpdating). Si vous vous sentez comme nonchalamment en regardant cela, vous pouvez utiliser la braise exécuter plus tard pour voir les éléments d'un tout petit peu plus tard. Ou vous pouvez définir le modèle du contrôleur et de la rendre et de laisser braise mise à jour de la vue lorsque les modèles de la fin du chargement...
http://jsbin.com/ijiqeq/12/edit
Bonne chance avec la Braise!
Désolé, j'ai manqué dans le premier post, Pouvez-vous générer un jsbin/jsfiddle montrant l'erreur?
Merci de prendre un coup d'oeil à cela, Daniel. Je l'ai mis dans un jsbin: jsbin.com/ijiqeq/3/edit. Course à la poubelle montre que l'objet de données a quatre éléments, mais tous les articles sont montrant la valeur null lorsque je itérer sur eux, ce qui est étrange et qui me fait penser que d'une certaine façon le premier élément a été configuré ailleurs dans mon code. Pas sûr de savoir comment cela peut arriver. Donc, je suis un peu plus confus pour l'instant...
hmmmm, je crois que je comprends, si vous voulez une jointure gauche (la duplication d'un superviseur pour chaque site). Je recommanderais donc à l'encontre de cela, juste parce que vous avez plus d'une source de vérité pour un superviseur. Aka, si vous modifiez quelque chose sur un superviseur modèle, vous devrez traquer le reste du superviseur du modèle qui doit être le même modèle et les mettre à jour. Pouvez-vous me donner un exemple de pourquoi vous voulez que le modèle est dupliqué, et peut-être que je peux donner un exemple d'une solution de contournement pour vous donner les mêmes résultats.
Je voudrais générer un supplément de tableau selon le modèle. Je vais mettre ci-dessus.
OriginalL'auteur Kingpin2k