7
votes

Manipulation d'action en vue pas routeur

J'ai une vue qui a un contenu extensible / effondré que je voudrais pouvoir basculer en cliquant sur la ligne de la table. Avant Pre1.0, j'avais ceci dans le modèle: xxx

qui a été préalablement géré à mon avis: xxx

Cependant, après la mise à niveau à Pre1.0 L'action est maintenant surplagée directement par le routeur. Cela a du sens dans beaucoup de situations, mais dans ce cas, l'expansion est vraiment une préoccupation de l'opinion. J'ai essayé de simplement remplacer cela avec un gestionnaire d'événement de clic sans chance.

Y a-t-il une meilleure pratique sur la manière de gérer un événement de préoccupation de vue comme celui-ci avec Pre1.0?


0 commentaires

3 Réponses :


1
votes

dans Pre1.0 Vous pouvez faire le champ d'affichage l'action en ajoutant cible = "parentview" à l'action:

{{action "expand" target="parentView"}}


1 commentaires

Vous pouvez également envelopper la cible (si vous avez plusieurs actions et / ou liaisons) à un seul objet / affichage à l'aide d'un {{with}} instruction.



20
votes

réponse obsolète


Même si la réponse de @ hors2344 fonctionne, je pense que ce n'est pas vraiment correct. En effet parentview ne représente pas la vue, mais le parentview de son parentview. Depuis 1.0-PRE, les vues préservent leur contexte, donc dans le modèle, ceci représente le parentview, parentview représente parentview.parentview et Voir représente la vue actuelle. Voici un violon pour illustrer ce: http://jsfiddle.net/sly7/cnmja/

pour moi la réponse est {{action expand cible = "Voir"}}

Modifier (répondant à @gal Ben-Haim)

Les aides d'action se comportent peu différents dans une application à base de routeurs. Devis de la documentation:

Dans les applications axées sur le routeur, si une action n'est pas interceptée par une vue , cet événement va buller jusqu'à la route dans laquelle cette vue a été rendue. Si cet itinéraire est un sous-route d'un autre itinéraire, la transition sera recherchée là-bas jusqu'à la définition de route de niveau supérieur, notre conteneur Über: racine.

Cet effet de bulletin permet de rester privé. Si certaines transitions ne devraient être disponibles que pour certains sous-sous-états, placez la transition sur le sous-État et vous avez obtenu un type de scopage.

Fondamentalement, pour moi, cela signifie que dans Applications pilotées par le routeur Si vous ne définissez pas explicitement une cible dans l'assistant d'action, elle est envoyée au routeur.


réponse mise à jour

Je pense que maintenant les guides répondent très bien à cette question. Voir http://emberjs.com/guides/templates/actions/#toc_specifiant- une cible


3 commentaires

Le routeur Docs emberjs.com/guides/rilter_primer/#toc_navigation Parlez clairement des événements étant manipulés par des vues et un effet bouillonnant jusqu'au routeur. Je ne comprends pas pourquoi cela ne fonctionne pas et que tout se passe directement au routeur, ou les documents sont faux / obsolètes?


Je devais citer mon action pour que cela fonctionne: {{action "développer" cible = "vue"}}


@pdenya Vous avez raison, car sans les citations, il tentera de trouver une propriété nommée Développer , pas la chaîne "Développer" .



1
votes

événements ne bulle pas par défaut de la hiérarchie de la vue. Vous pouvez changer ceci (bien que je ne puisse pas dire que je le recommanderais): XXX


0 commentaires