2013-08-19 1 views
1

Nous envisageons de créer une application de type Excel dans AngularJS où nous souhaitons annuler/rétablir le support pour l'édition de cellule.Implémentation Undo/Redo pour une application CRUD AngularJS

Des conseils sur la meilleure stratégie pour mettre en œuvre cela?

Je ne pense pas seulement à annuler le texte que j'ai saisi dans une zone de texte. Je veux dire entrer des données dans plusieurs cellules et ensuite défaire chacune de ces entrées.

J'ai expérimenté en poussant le modèle actuel sur une pile avant chaque modification. Cela permet d'annuler en restaurant le modèle à un état antérieur. Cependant, comment puis-je combiner cela avec l'interaction REST CRUD? La manière "naturelle" de résoudre le CRUD est de faire un appel REST immédiat au backend (mise à jour de la base de données) pour chaque modification. Mais alors annuler va simplement modifier le modèle dans Angular, pas la base de données. Et il n'y a pas de moyen simple d'afficher le delta entre les deux modèles sur REST.

+0

Si les cellules ne sont que des champs d'entrée, CTRL + Z et CTRL + SHIFT + Z annuleront l'opération. – jcubic

+0

@jcubic J'ai clarifié ma question à ce sujet. –

+0

J'ai supprimé toute référence à la braise de la question afin qu'elle soit complètement sur le sujet. –

Répondre

1

Je dirais que c'est une fonctionnalité qui n'est pas particulière à angular-js, mais plutôt quelque chose de réalisé avec la capture d'état. Vos actions (telles que l'édition, l'ajout, le déplacement de cellules, etc.) changeraient toutes l'état de votre application, les deltas de ces états pourraient être poussés vers une structure qui peut être restaurée.

Si vous annulez, dites 2 actions, puis démarrez une nouvelle action, puis les 2 états les plus seront supprimés et les nouveaux états activés.

Des applications telles que l'historique de stockage Photoshop similaire à celui-ci (et pour des raisons similaires ne permettent pas d'annulation illimitée). Encore une fois cependant, je dirais que c'est une fonctionnalité qui ne devrait pas être liée au cadre angulaire, mais vous pourriez évidemment le servir comme un service angulaire.

+0

Ok, mais je pensais que ce serait quelque chose qui pourrait être intégré à la liaison de données peut-être. Je suis novice en ce qui concerne les angles, donc il n'est malheureusement pas évident de savoir comment il serait utilisé comme un service angulaire. –

Questions connexes