Je suis la recherche Angulaire de l'utilisation de modèles à confusion. Angulaire semble prendre l'approche d'un modèle peut être quelque chose que vous aimez - I. E. Angulaire ne comprend pas un modèle explicite de la classe et vous pouvez utiliser de la vanille des objets JavaScript, comme des modèles.
Dans presque tous Angulaire exemple que j'ai vu, le modèle est effectivement un objet, soit créés par la main, ou retourné par un appel d'API par l'intermédiaire d'une Ressource. Parce que presque tous Angulaire exemple, que j'ai regardé est simple, généralement le modèle de données stockées sur $portée dans un contrôleur, et à tout etat liées à la le modèle, par exemple la sélection, sont également stockées sur la somme portée dans le contrôleur. Cela fonctionne très bien pour des applications simples et des exemples, mais cela semble être une simplification excessive lorsque les applications deviennent plus complexes. Modèle de l'état stocké dans un contrôleur est à risque de le devenir contextuelles et d'être perdues si le contexte change, par exemple, Un Contrôleur de stockage selectedGallery
et selectedPhoto
ne peut stocker que de global selectedImage
, pas un selectedPhoto
par galerie. Dans une telle situation, l'utilisation d'un contrôleur par galerie peut nier ce problème, mais semble inutile et probablement inapproprié et inutile d'un point de vue de l'INTERFACE utilisateur.
Angulaire de la définition de modèles semble plus proche de ce que je considère comme un VO/DTO qui est un muet objet passé entre le serveur et le client. Mon instinct est d'envelopper un tel objet dans ce que je considère comme un Modèle - une classe qui gère l'état relatives à la DTO/VO (comme la sélection), propose des mutateurs que nécessaire pour manipuler les DTO/VO, et en informe le reste de l'application des modifications aux données sous-jacentes. Évidemment, cette dernière partie est très bien pris en charge par Angulaire de liaisons, mais je vois encore une forte cas d'utilisation pour les deux premières responsabilités.
Cependant, je n'ai pas vraiment vu ce motif est utilisé dans les exemples que j'ai regardé, mais je n'ai pas vu ce que je considère être une solution évolutive alternative. Angulaire semble implicitement décourager l'utilisation de Services comme des modèles par l'application de Singletons (je sais qu'il ya des façons de contourner cela, mais ils ne semblent pas largement utilisés ou approuvé).
Alors, comment devrais-je conserver l'état sur le Modèle de données?
[Modifier] La deuxième réponse à cette question est intéressante et proche de ce que je suis en train d'utiliser.