2010-05-20 5 views
0

J'essaye de créer une structure modulaire qui finira par vivre dans une autre application actionscript/flex. J'utilise cairngorm dans l'application externe et j'aimerais créer plus d'une instance de ce nouveau composant dans l'application interne. Cairngorm ne fonctionne pas pour créer plusieurs composants dupliqués en raison de la nature singleton du modèle.Comment créer un modèle d'instance qui peut être partagé à travers un composant (qui peut être créé plus d'une fois)

Le composant que je crée est un pseudo visualiseur vidéo. J'aimerais avoir un modèle partagé dans cette instance de composant. Je me bats avec un moyen de partager un seul modèle dans le composant. Si j'utilise le modèle singleton, je ne peux pas créer plus d'une instance de ce composant. Si je crée une instance et que le composant s'assure qu'il n'y en a qu'un, j'ai du mal à passer facilement le modèle à tous les composants qui le souhaitent. Ceci est particulièrement difficile car les composants .mxml ne peuvent pas avoir de constructeur où je passerais dans le modèle.

Je pensais que chaque composant demanderait à son parent le module jusqu'à ce qu'un composant l'ait. Cela exigerait que chaque composant ait cette interface implémentée et me semble un peu bizarre.

Est-ce que quelqu'un connaît un moyen de créer une variable d'instance dans un composant afin que plusieurs composants puissent être créés, mais aussi de partager ce modèle facilement à travers ce composant?

+0

Il est drôle que vous avez repéré cette question avec swiz même si la balise swiz est la seule référence à swiz. Voulez-vous que quelqu'un vous dise que vous devriez utiliser swiz et injecter une instance de modèle dans des composants spécifiques? :-) –

+0

Une autre solution qui peut fonctionner est que l'élément racine du composant pseudo injecte l'instance du modèle via mxml. Pensez quelque chose comme cela pourrait fonctionner, il semble que ce gars (http://www.dehats.com/drupal/?q=node/49) résout par pseudo injecter le modèle à travers mxml dans un modèle de présentation: \t Où BookDetailsPanel est la vue et AppModel est l'instance détenue par le composant parent. – Scott

+0

Je l'ai tagué Swiz parce que je sais que Swiz a un concept de Prototype qui, bien que ne résolvant pas vraiment le problème, est un peu meilleur que l'approche singleton de Cairngorm. Je n'ai pas beaucoup d'expérience avec Swiz et la plupart de nos trucs sont à Cairngorm, donc je voulais voir si les gens de Swiz ont rencontré ça et ont un moyen que je n'ai pas vu avec leur framework pour faire quelque chose comme ça. J'aurais dû mentionner que j'ai essayé une solution Swiz, mais la construction prototype n'a pas permis le partage à travers le composant, et singleton a les mêmes problèmes que Cairngorm. – Scott

Répondre

0

La dernière version de Swiz (1.0.0) a la réponse à cette question. Vous pouvez maintenant créer plusieurs instances de Swiz dans un projet et configurer une relation parent-enfant. La page de support du module est là où ils l'expliquent le mieux (http://swizframework.jira.com/wiki/display/SWIZ/Module+Support) mais vous n'avez pas réellement besoin d'utiliser des modules, toute relation parent-enfant fonctionnera.

Rappelez-vous simplement que pour garder tous les gestionnaire d'événements de répondre à un événement d'une vue enfant, vous devez définir la portée EventHandler au niveau local, par exemple:

[EventHandler(event="TestEvent.SAVE_USER_REQUESTED", scope="local")] 
public function handleEvent(event:Event):void { 
    //do stuff 
} 
Questions connexes