Показать сообщение отдельно
  #1 (permalink)  
Старый 09.07.2012, 23:16
Новичок на форуме
Отправить личное сообщение для skivan Посмотреть профиль Найти все сообщения от skivan
 
Регистрация: 04.10.2011
Сообщений: 1

При вызове функции клонируются объекты
Есть скрипт:
<script>
    $(function () {
      $('a[href="#iwssid-lua-tab"]').on('shown', function (e) {
        
        post = get_data('lua/iwssid.lua'); 
        $('#iwssid-lua-code').val(post);
        
        var iwssid_editor = CodeMirror.fromTextArea(document.getElementById("iwssid-lua-code"), {
                            mode: "lua",
                            autofocus: true,
                            lineNumbers: true,
                            lineWrapping: true,
                            onCursorActivity: function() {
                                iwssid_editor.setLineClass(hlLine, null, null);
                                hlLine = iwssid_editor.setLineClass(iwssid_editor.getCursor().line, null, "activeline");
                            },                                                                                        
                            onBlur: function () { 
                                iwssid_editor.save();
                            }
                            });
            var hlLine = iwssid_editor.setLineClass(0, "activeline");
            })
        })
</script>

При переключении с таба на таб объект iwssid_editor дублируется каждый раз.
Вот так это выглядит:

Вынести создание объекта не хотелосьбы так тогда приется писать костыль для загрузки данных из textarea что не красиво.
Как можно при вызове функции уничтожить существующий объект iwssid_editor
Я пробовал делать iwssid_editor = null и delete iwssid_editor не получается

Может есть другое решение можей задачи.
Мне нужно чтобы при смене таба загружалось содержимое textarea из файла (для этого у меня есть методы get_data и set_data) и после этого создается экземпляр codemirror. Важно чтобы при изменении текста в codemirror он сохранялся в файл а при переключении табов тектс в codemirror обновлялся. Примерно это выглядит так:
<!-- ==============================IWSSID-LUA-TAB======================================================-->
        
        <div class="tab-pane fade" id="iwssid-lua-tab">
            
            <div>
                <button id="save-iwssid-code" class="btn btn-info" onclick="set_data('lua/iwssid.lua',$('#iwssid-lua-code').val())">Save</button>
                <a href="lua/iwssid.lua" target="_blank" class="btn btn-success pull-right">Dowload File</a>
            </div>
            
            <br>
            
            <form>
                <div>
                    <textarea id="iwssid-lua-code" name="iwssid-lua-code"></textarea>
                </div>
            </form>
            
<script>
    $(function () {
      $('a[href="#iwssid-lua-tab"]').on('shown', function (e) {
        
        post = get_data('lua/iwssid.lua'); 
        $('#iwssid-lua-code').val(post);
        
        var iwssid_editor = CodeMirror.fromTextArea(document.getElementById("iwssid-lua-code"), {
                            mode: "lua",
                            autofocus: true,
                            lineNumbers: true,
                            lineWrapping: true,
                            onCursorActivity: function() {
                                iwssid_editor.setLineClass(hlLine, null, null);
                                hlLine = iwssid_editor.setLineClass(iwssid_editor.getCursor().line, null, "activeline");
                            },                                                                                        
                            onBlur: function () { 
                                iwssid_editor.save();
                            }
                            });
            var hlLine = iwssid_editor.setLineClass(0, "activeline");
            })
        })
</script>
        </div>
        <!-- ==============================END OF IWSSID-LUA-TAB======================================================-->


И вот такой метод для данных:
<script>
        function get_data(file) {
            var post;
            $.ajax({
                   type: "POST",
                   async: false,
                   url: "filemanager.php",
                   data: { command: "get", filename: file }
                   }).done(function(msg ) {
                           post = msg;
                           
                           
                           });
            return post;
        }
        
        function set_data(file, content) {
            $.ajax({
                   type: "POST",
                   url: "filemanager.php",
                   data: { command: "set", filename: file, data: content }
                   }).done(function(msg ) {
                           alert("Done");
                           });
        }
        
        </script>
Ответить с цитированием