2013-10-29 6 views
8

Ich bin ganz neu in den ACE Editor und JavaScript im Allgemeinen jedoch habe ich es geschafft die meisten erreichen, was sollte ich abgesehen von dem folgenden:ACE Editor Änderungsereignis

I ‚aktivieren oder deaktivieren möchte ein sparen 'Taste je nachdem, ob die ausstehenden Änderungen an dem Dokument, und ich habe versucht, dies zu tun mit ‚Veränderung‘ Veranstaltung:

UndoManager.reset(); 

$('#save').addClass("disabled"); 

editor.on('change', function() { 

     if (UndoManager.hasUndo()) { 
      $('#save').removeClass("disabled"); 
     } 
     else { 
      $('#save').addClass("disabled"); 
     } 

    }); 

Beim Laden eines Dokuments der ‚behindert‘ Klasse sofort entfernt wird.

Vielen Dank im Voraus, wenn jemand mir zeigen kann, wie es getan werden soll.

Antwort

17

Anruf editor.session.getUndoManager().reset() nach dem Dokument Laden und isClean, markClean Methoden auf undoManager verwenden.

var saveButton = document.getElementById("save") 
 
var editor = ace.edit("editor") 
 
// using input event instead of change since it's called with some timeout 
 
editor.on("input", function() { 
 
    saveButton.disabled = editor.session.getUndoManager().isClean() 
 
}); 
 

 
saveButton.addEventListener("click", function() { 
 
    editor.session.getUndoManager().markClean() 
 
    saveButton.disabled = editor.session.getUndoManager().isClean() 
 
})
<script src="http://ajaxorg.github.io/ace-builds/src/ace.js"></script> 
 
<button id="save">save</button> 
 
<div id="editor" style="height:200px"></div>

+0

Danke, das gut funktioniert (obwohl ich das Add wechseln musste und Klassenanweisung entfernen - meine Schuld). Ist es möglich, zu erfassen, wenn der Benutzer zurück zum Anfang des Rückgängig-Pufferspeichers zurückgespult hat, und die deaktivierte Klasse dann erneut hinzuzufügen? So oder so, Ihre Hilfe wird sehr geschätzt. – ensignos

+1

änderte ich den .isClean() zu .hasUndo() (und umgekehrt das Add/Aussagen entfernen) und jetzt, wenn der Benutzer zu Beginn des Undo spult puffern die Schaltfläche ‚Speichern‘ deaktiviert. Es unterstützt auch Redo. Sehr cool. – ensignos

+1

am Eingang Ereignis !!! dass funktioniert nicht –

7

hat Ihre Lösung einen Nachteil: nach dem Speichern, Sie sind rückgängig zu machen nicht in der Lage. Die meisten modernen Editoren erlauben das Rückgängigmachen nach dem Speichern.

Ich schlage vor, dass Sie den ursprünglichen Text notieren nach unten und einen Vergleich, wenn Textänderungen tun. Wenn Text gleich ist, deaktivieren Sie die Schaltfläche "Speichern".

+0

Einfach und effizient! – dduft

Verwandte Themen