Habituellement, les modèles sont supposés ne contenir pratiquement aucune logique. Les vues contiennent la logique permettant d'afficher les données fournies par les modèles. Comme une telle vue accède aux modèles, et non l'inverse. Cela permet également de définir plusieurs vues différentes pour le même ensemble de données.
Dans Flex, les fournisseurs de liaison de données et de contenu sont à la fois un bon moyen d'intégrer des données dans la structure MXML. En particulier la liaison de données vous permet d'utiliser le contenu sans trop y penser; et surtout sans définir vous-même toutes les références (vous n'avez donc pas besoin de les écrire en code).
Pour éliminer le reste de la logique de la vue, vous utilisez généralement des contrôleurs dans l'architecture MVC. Les contrôleurs sont un "intermédiaire" entre les vues et les modèles et sont supposés traiter les données. Donc toute la logique utilisée par votre application est supposée être là. De cette façon, vous avez une stricte séparation des modèles (qui ne contiennent que les données pures), des vues (qui n'affichent que des données) et des contrôleurs (qui les rapproche tous et ajoute la logique de l'application). Voir le Wikipedia article pour plus d'informations sur ce sujet.
Et pour finir, il existe des frameworks qui facilitent la gestion de MVC. Le plus connu pour ActionScript est probablement RobotLegs.
Merci, il semble que cette solution ressemble étroitement à l'architecture que nous mettons en place. Si je comprends bien, j'ai besoin d'avoir un attribut du modèle qui mappe chaque contrôle dans la vue et affecte directement les changements sur ces contrôles aux attributs? – Sandy
Autre question: dans le modèle PM, une fois que vous commencez à avoir d'autres composants enfants personnalisés ayant leurs propres modèles, comment gérez-vous la communication entre eux sans contrôleur? – Sandy
Donc si je comprends bien votre question, je fais souvent du modèle une propriété publique du PM afin que je puisse lier directement aux accessoires dans le modèle quand il n'y a pas besoin de s'adapter à la vue. Pour les choses qui doivent s'adapter à la vue, je crée des getters personnalisés pour faire l'adaptation. En ce qui concerne la communication entre les MP, vous pouvez utiliser un modèle commun ... ou vous pouvez utiliser un bus d'événement de quelque sorte. J'utilise un conteneur léger Inversion of Control pour injecter le bus de modèle et d'événement dans mes MPs. –