permet de dire que nous avons et je dois utiliser la fonctionnalité Depuis ce commit https://github.com/emberjs/data/commit / 4D717BFF53F8C93BEDBEBE74E7965A4F4398865A4F439882E259 P> Il semble qu'il est impossible de déclencher une recharge de la post.get ('Commentaires'), c'est-à-dire envoyer une demande d'obtention par exemple post / 42 / commentaires. P > y a-t-il une solution pour cela? P> p> code> car sinon je reçois une erreur 414 en raison de vos commentaires sur un post. < / p>
6 Réponses :
J'ai eu le même problème et j'ai triché pour trouver une "solution" p>
J'ai créé un composant "commentaires". Ce composant prend un argument (post_id) et Avant "Insertion" (WillinsERTelement), j'ai garé tous les commentaires et les rendant. ça marche mais ... je ne suis pas fier de cela: ( p>
Qu'entendez-vous par «GRAD TOUS les commentaires»? Vous faites une demande Ajax personnalisée dans le Willinsertelement, comme $ .ajax ('/ commentaires? Post_id = 42')?
Je voulais dire attraper: j'ai utilisé QueryParmas (this.store.find ('Commentaire', {post_id: params.post_id})
Ok, cela devrait fonctionner, mais malheureusement, cela ne se soucie pas des choses «liens». Merci d'avoir donné du temps à ce sujet. Je pense que je vais accepter @ Marcio-Rodrigues-Correa-Junior Répondre.
Comme @ sly7_7 a déclaré dans votre réponse ci-dessous, cette fonctionnalité est maintenant disponible dans les données Ember-Data. Donc, si vous utilisez la version 1.0.0-BETA.11 ou plus, ce code n'est pas nécessaire p> Vous pouvez rouvrir le L'utilisation est la suivante: p> roparyraray code> et créer une nouvelle méthode appelée reloadlinks () code>. Avec ce qui suit: p>
comments.reloadLinks();
C'est vraiment intéressant, et je pense que cela pourrait faire le travail pour l'instant :) Un commentaire cependant, je trouve que c'est bizarre de devoir donner le nom d'attribut, car la fonction elle-même est sur le baladray correspondant. Je pense qu'il est possible de le récupérer avec une réflexion sur les nombreux array?
Je n'ai pas trouvé de façon de le faire. Lorsque le nombre de tableau est créé Voici , nous avons le type et le propriétaire, mais pas le nom de propriété et nous avons besoin du nom de propriété. Dans votre cas, Poste de bacause n'a qu'une seule relation avec commentaire, peut-être qu'il est possible d'identifier la relation. Dans une autre situation où un modèle a deux relations du même type, comment savoir quel est le courant? Donnez un coup d'œil à ce code commenté jsfiddle.net/marciojunior/e2auc
On dirait qu'un MomalArray ait un «nom» de propriété, ce qui est exactement ce que vous recherchez. Ou peut-être que je manque quelque chose. Voir jsfiddle.net/mvxzn/2
Étonner! Vous avez raison, cette propriété est configurée ICI .js # l20 "rel =" nOfollow noreferrer "> Déclaration de classe donc je pensais que cela n'existe pas :) Je vais mettre à jour la réponse.
Oui, je vais essayer d'envoyer ce soir, il y a des choses à travailler, comme le drapeau code> isupdating code> et mettez à jour le MALLYARERAY code> au lieu de créer un nouveau. Merci pour le conseil du nom de la propriété, beaucoup aidé.
Ce serait-il un bon endroit pour faire pagination? Ajouter & offset = 10 et limite = 100 code> ou quelque chose de similaire à la lien code>
Nice correction, mais je devais ajouter une ligne de code supplémentaire à ce correctif. Juste une ligne au-dessus du Store.findhasmany code>, j'ai ajouté:
meta.type = type; code>. Je travaille avec les données Ember 1.0.0-Beta.8 pour le moment.
Une autre option consiste à ajouter une méthode au modèle. Devrait également fonctionner pour HASMANY:
search: DS.belongsTo('search', {async: true}) updateSearch: -> resolver = Ember.RSVP.defer() resolver.resolve = => # do something after promise resolves relationship = @constructor.metaForProperty('search') link = @_data.links[relationship.key] @store.findBelongsTo this, link, relationship, resolver
Rechargement d'une HASMANY n'est pas encore directement intégré aux données Ember, mais c'est sur son chemin. La solution que j'utilise nécessite des données Ember Data 1.0b9 + Canarie, qui comprend
0 commentaires
avec appelez simplement Ceci fonctionne à la fois pour les relations d'appartenance Normal et de lien entre eux / HASMANY. P> modèle.reloadrelationhip (nom) code> où Le nom est le nom de l'attribut modèle représentant la relation. p>
DS.Model.reopen({
reloadRelationship: function(key) {
var record = this._relationships[key];
if (record.relationshipMeta.kind === 'belongsTo') {
return this.reloadBelongsTo(key);
} else {
return this.reloadHasMany(key);
}
},
reloadHasMany: function(key) {
var record = this._relationships[key];
return record.reload();
},
reloadBelongsTo: function(key) {
var record = this._relationships[key];
if (record.link) {
return record.fetchLink();
} else {
record = this.store.getById(record.relationshipMeta.type, this._data[key]);
return record.get('isEmpty') ? this.get(key) : record.reload();
}
}
});
Merci à @Igort, ceci est mis en œuvre. https://github.com/emberjs/data/pull/2297 p>
Maintenant, la méthode de Reload (), que vous pouvez même appeler si la relation n'a pas encore été chargée. P>
Vous pouvez voir des cas d'utilisation en lisant le tests p>
Je pense que la meilleure façon de résoudre ce problème est de remplacer la méthode code> de la méthode code> à partir de
jarkARray code>, dans la classe
MALLYARERAY code>. Et donner du contexte, comme les liens
code>. Pour le moment, en utilisant
comments.UPDate () code> va chercher tous les commentaires, énoncé de juste "post / 1 / commentaires". Mais pour faire cela, une demande de traction sera nécessaire.
Ouais, comme première tentative, j'ai essayé d'utiliser la méthode de mise à jour;). J'aimerais entendre @wycats sur cette suggestion de relations publiques.
Était-ce déjà soumis comme un PR?
Merci à @Igort, cela vient d'être poussé à Master maintenant: Github.com/emberjs/data/pull / 2297 s'il vous plaît essayez, vous avez beaucoup apprécié :)