La mise en œuvre de l'annuler dans une application web
Je suis la création d'une carte de montage webapp où l'on peut créer et modifier des polylignes, polygones, etc. J'ai de la difficulté à trouver des informations sur l'annulation de la mise en œuvre sur le web, j'ai trouver pleurnicher sur la "nous avons besoin d'annuler" et "voici mon modèle de Commande à l'aide de fermetures" mais je pense que entre ça et plein d'annuler/refaire l'interface il est tout à fait la route.
Donc, voici mes questions (bon candidat pour le wiki, je pense):
- Devrait je gérer la pile, ou est-il un moyen d'envoyer mes commandes pour le navigateur de la pile ? (et comment dois-je traiter les commandes natives, comme les modifications de texte dans textifields dans ce cas)
- comment dois-je traiter la commande "compression" (groupement de commande) lorsque certaines commandes sont navigateur natif
- Comment puis-je détecter les annuler (ctrl+z) de frappe?
- Si je m'inscrire à un événement keyup, comment puis-je déterminer si je me prévenir par défaut ou pas?
- Si non, puis-je enregistrer des undoevent gestionnaire de quelque part ?
- Les utilisateurs ne sont pas utilisés pour annuler sur le web, comment puis-je "train" à explorer/annuler ma demande ?
Merci à tous.
Annuler quoi? Les champs de saisie dans le navigateur ont annuler à l'aide de ctrl-z. De quoi avez-vous besoin de l'annuler? Un soumettre?
mon contexte de création de cartes, mais je voudrais ouvrir le sujet un peu.
mon contexte de création de cartes, mais je voudrais ouvrir le sujet un peu.
OriginalL'auteur nraynaud | 2011-06-17
Vous devez vous connecter pour publier un commentaire.
Vous devez avoir les fonctions pour objet la création et la suppression. Ensuite transmettre ces fonctions à l'annulation du gestionnaire. Voir le fichier de démonstration de mon javascript annuler manager: https://github.com/ArthurClemens/Javascript-Undo-Manager
La démo montre le code de la toile, mais le code est agnostique.
Il ne contient pas de raccourcis clavier, mais peut vous aider dans les premières étapes.
Moi-même j'ai utilisé dans une application web avec les boutons annuler et rétablir, à côté de l'enregistrer.
En effet, une approche générique ne fonctionne pas dans ce cas. En continu les actions que vous pouvez choisir de stocker seulement le résultat final.
le problème est de détecter le "résultat final" comme une propriété directement lié à un curseur (donc à l'utilisateur d'avoir un retour immédiat sur son action), vous ne savez pas quand il en a fini avec la tripote le curseur. Vous pouvez essayer d'en déduire, avec le temps (2s sans tripoter le curseur veut dire qu'il est fini), mais il est difficile d'obtenir le droit, avec les certains cas (relâchez le bouton de la souris) sur le contrôle, compresser la pile d'annulation à la volée (c'est à dire vous avez quelques comparable des trucs sur la pile, pas de simples fermetures, ou vous pouvez marquer les groupes d'événements.
OriginalL'auteur
Voici un échantillon de N-annulation au Niveau de l'utilisation Huitièmes de finale JS:
http://jsfiddle.net/paultyng/TmvCs/22/
Il utilise un modèle MVVM pour que votre page d'état est représenté dans un objet javascript qu'il conserve un historique pour.
OriginalL'auteur
La façon Cappuccino automatique d'annuler le soutien des œuvres est en racontant l'annuler gestionnaire de quelles propriétés doivent être réversibles. Par exemple, imaginez que vous êtes la gestion des dossiers des étudiants, vous pourriez faire quelque chose comme:
Maintenant, indépendamment de la façon dont les élèves nom est changé dans l'INTERFACE utilisateur, frapper annuler automatiquement revenir en arrière. Cappuccino aussi s'occupe automatiquement de coalescence des modifications dans la même boucle, marquant le document comme "sale" (besoin de l'enregistrer) quand il y a des éléments dans la pile d'annulation, etc etc (en d'autres termes, le dessus doit être TOUT ce que vous devez faire pour soutenir annuler).
Comme autre exemple, si vous souhaitez apporter des ajouts et des suppressions d'étudiants infaisable, tu ferais suivantes:
Depuis des "étudiants" est un tableau d'étudiants dans theClass, puis les ajouts et les suppressions de ce tableau seront suivis.
Cappuccino juste poignées -- automatiquement les liens directement dans cmd-z sur mac, ainsi que les raccourcis clavier sur windows, etc etc. Il doit tout "fonctionne".
Mon but est de ne pas utiliser cappuccino à l'aveuglette, je suis en création d'une ando système pour une application qui n'utilise pas de cappuccino. J'aimerais comprendre comment vous avez fait avant. Mais le code de la structure est vraiment dur à lire et à suivre pour les profanes.
Je ne suis pas sûr de comprendre -- dites-vous que vous essayez de mettre en œuvre annuler des caractéristiques similaires à cappuccino, mais dans une application qui ne sera pas à l'aide de cappuccino?
Je ne suis pas demander à quelqu'un d'écrire mon code pour moi, c'est exactement l'inverse, j'aimerais que chaque développeur d'avoir la langue naturelle de l'information en un seul endroit pour écrire leur propre code. Si je demande à chaque question séparément, je vais devenir smart-ass JS oneliners de karma-faim hordes que de réponses, ce qui est exactement ce que je ne veux pas. Je pense que mon vrai problème, c'est que c'est le mauvais endroit pour cette question (pour l'ouvrir, pas de direct à court intelligent de réponse), mais je ne connais pas de meilleur site pour cela de toute façon.
OriginalL'auteur