J'utilise ACE
pour la première fois. J'ai les questions ci-dessous à ce sujet.
Comment trouver l'instance de l'éditeur
ACE
sur la page? Je ne veux pas conserver une variable globale qui contiendra l'instance de l'éditeur. J'ai besoin de trouver son instance sur demande.Comment obtenir et définir sa valeur?
Je suis ouvert aux suggestions pour un meilleur éditeur que ACE
éditeur qui supportera presque tous les types de langage/balisage/css, etc. et hautement intégré à jQuery
.
Par leur API :
Annotation:
<div id="aceEditor" style="height: 500px; width: 500px">some text</div>
Recherche d'une instance:
var editor = ace.edit("aceEditor");
Obtention/définition des valeurs:
var code = editor.getValue();
editor.setValue("new code here");
D'après mon expérience, Ace est le meilleur éditeur de code que j'ai vu. Il y en a peu d'autres comme CodeMirror etc. mais je les ai trouvés moins utiles ou difficiles à intégrer qu'Ace.
Voici une page Wiki pour comparer ces éditeurs .
Il y en a un payé aussi que je n'ai pas essayé (et je ne me souviens pas pour l'instant). Sera mis à jour plus tard si je peux le trouver.
Pour enregistrer le contenu de l'éditeur, j'ai placé une entrée cachée juste avant, et j'ai initialisé l'éditeur comme suit:
var $editor = $('#editor');
if ($editor.length > 0) {
var editor = ace.edit('editor');
editor.session.setMode("ace/mode/css");
$editor.closest('form').submit(function() {
var code = editor.getValue();
$editor.prev('input[type=hidden]').val(code);
});
}
Lorsque mon formulaire est soumis, nous obtenons la valeur de l'éditeur et la copions dans l'entrée masquée.
Je résous ce problème avec une entrée cachée :)
<input type="hidden" name="komutdosyasi" style="display: none;">
<script src="/lib/aceeditor/src-min/ace.js" type="text/javascript" charset="utf-8"></script>
<script>
var editor = ace.edit('editor');
editor.session.setMode("ace/mode/batchfile");
editor.setTheme("ace/theme/monokai");
var input = $('input[name="komutdosyasi"]');
editor.getSession().on("change", function () {
input.val(editor.getSession().getValue());
});
</script>
Supposons que nous avons initialisé l'éditeur ace sur une balise en html. EX: <div id="MyAceEditor">this the editor place holder</div>
.
Dans la section javascript, après avoir chargé ace.js,
La première étape consiste à trouver l'instance de votre éditeur comme ci-dessous.
var editor = ace.edit("MyAceEditor");
Pour obtenir la valeur de l'éditeur ace, utilisez la méthode getValue () comme ci-dessous.
var myCode = editor.getSession().getValue();
Pour définir la valeur sur ace editor (pour pousser du code dans l'éditeur), utilisez la méthode setValue()
comme ci-dessous.
editor.getSession().setValue("write your code here");
var editor = AceEditor.getCurrentFileEditor("MyEditor");
Cela retournerait l'objet éditeur en cours
var code = editor.getValue();
Cela retournerait le texte dans l'éditeur.