Une stratégie intéressante pour passer des propriétés via les sorties de plugin de template brut

Une question rapide à ce sujet.

J’ai remarqué quelque chose d’intéressant dans TLT :

Il n’y a pas de passage du modèle ici.

Pourtant, vous parvenez à faire ceci :

Je ne peux que supposer qu’il s’agit d’une stratégie stable pour transmettre les propriétés du modèle car elle est employée ici - des mises en garde ?

L’une des raisons pour lesquelles je trouvais ces points de sortie de plugin disponibles moins utiles était qu’ils ne transmettent pas explicitement le modèle pertinent.

Ce modèle est-il documenté quelque part ? Je ne l’ai pas vu dans les guides Ember…

3 « J'aime »

Le système « raw » est spécifique au discours, vous ne trouverez donc rien à son sujet dans les guides Ember.

[quote=« merefield, post:1, topic:210054 »]
Je ne peux que supposer qu’il s’agit d’une stratégie stable pour transmettre les propriétés du modèle car elle est employée ici - des mises en garde ?
[/quote]Il semble que ce soit assez délibéré dans le code source, donc je pense qu’il est sûr de l’utiliser :

En fait, il ne semble pas que les « raw » outlets aient la capacité de passer quoi que ce soit comme les « args » que l’on trouve dans les plugin-outlets réguliers. Donc, context est la seule façon de faire.

N’hésitez pas à créer des PRs au cœur du système si vous pensez que des données utiles manquent dans les « plugin » outlets réguliers. L’ajout de nouveaux arguments aux « outlets » est relativement sûr, rétrocompatible et a un impact négligeable sur les performances, il est donc peu probable que nous refusions.

7 « J'aime »

J’ai également eu du mal à transmettre des arguments aux sorties de plugin. Mon objectif était de placer une sortie de plugin sur une page et de permettre à la sortie d’accéder à toutes les informations que les autres composants référencent sur cette page.

J’ai essayé ceci dans un composant de thème que je code :

{{~raw-plugin-outlet name="cool-outlet" args=(hash model=model)}}

Mais j’obtiens l’erreur : Compile Error: raw-plugin-outlet is not a helper

Y a-t-il autre chose que je doive faire pour que cela fonctionne ?

L’élément raw-plugin-outlet ne peut être utilisé qu’à l’intérieur des modèles ‘raw’ (ceux se terminant par .hbr). Pour les modèles Ember classiques, vous devriez utiliser {{plugin-outlet ...}}.

1 « J'aime »

EDIT : J’ai réalisé que ce qui suit est probablement mieux pour son propre sujet. J’ai également réalisé que le problème principal que j’ai est d’importer les actions d’un composant dans une sortie de plugin. J’ai posé une question à ce sujet ici :


Existe-t-il un moyen plus simple/standard de passer des arguments avec succès à une sortie de plugin ?

Par exemple :

Si dans un template il y a la référence suivante au composant composer-action-title, comme ceci :
composer.hbs :

 {{composer-action-title
       model=model
        openComposer=(action "openComposer")
        closeComposer=(action "closeComposer")
        canWhisper=canWhisper
        tabindex=8
  }}

et que je voulais ajouter une sortie de plugin qui, dans cette sortie de plugin, avait le même code, comme :
connectors/cool-outlet/cool-outlet.hbs :

 {{composer-action-title
       model=model
        openComposer=(action "openComposer")
        closeComposer=(action "closeComposer")
        canWhisper=canWhisper
        tabindex=8
  }}

Que dois-je faire pour permettre à ma sortie de plugin cool-outlet de référencer avec succès le composant composer-action-title ?

Utiliser une référence comme :
{{plugin-outlet name="cool-outlet" args=(hash model=model)}}
dans composer.hbs ne semble pas fonctionner.