2016-08-19 5 views
0

Ich habe eine Web-App. In dieser App habe ich eine Seite mit dynamisch erstellten bearbeitbaren Elementen. Ich habe den Bearbeitungsteil gut funktioniert. Mein Problem ist, ich bin nicht in der Lage, Änderungen aus dem Eingabeelement zurück zu meiner Datenstruktur zu binden. Ich habe eine Geige here. Mein entsprechenden Code sieht wie folgt aus:Bindung zwischen UI und JavaScript: Verschiedene Bereiche?

var options = []; 

$(document).ready(function() { 
    $(function() { 
    $.material.init(); 
    }); 

    // Initialize the options 
    options.push({ id:1, html:'' }); 
    options.push({ id:2, html:'' }); 
    options.push({ id:3, html:'' }); 

    var optionEditors = $('.option-editor'); 
    for (var i=0; i<optionEditors.length; i++) { 
    $(optionEditors[i]).summernote({ 
     airMode: true, 
     popover: { 
     air: [ 
      ['font', ['bold', 'underline', 'clear']] 
     ] 
     }, 
     callbacks: { 
     onInit: function() { 
      var editor = $('.note-editor'); 
      editor.addClass('form-control'); 
      editor.bind('DOMSubtreeModified', onUpdate); 
      $(this).summernote('code', ' '); 

      var editable = editor.find('.note-editable'); 
      editable.attr('data-id', $(this).attr('data-id')); 
      editable.attr('data-index', $(this).attr('data-index'));   
     } 
     }  
    });  
    } 
}); 

function onUpdate(option) { 
    try { 
     var id = choice.target.getAttribute('data-id'); 
     var index = choice.target.getAttribute('data-index'); 
     alert(id + ' : ' + index) 
     options[index].html = choice.target.innerHTML; 
    } catch (ex) { 
    } 
} 

Es ist fast wie die options Variable in einem anderen Bereich ist. Es ist so seltsam. Grundsätzlich, wenn der Text in einem der Eingabefelder aktualisiert wird, sollte der Inhalt options aktualisiert werden. So dass, wenn ich auf die Print Schaltfläche klicke, kann ich den Inhalt der options Variable im Konsolenfenster sehen. Ich bin mir nicht sicher, was ich falsch mache.

+0

kann nicht sehen, wie das funktionieren würde. NOWHERE in Ihrer for() - Schleife greifen Sie auf Optionen zu oder ändern sie. Es gibt buchstäblich keine Verbindung von 'Optionen' zum Rest des Codes. –

+0

@MarcB Die Idee ist, dass 'onUpdate' für die Aktualisierung der 'options'-Sammlung verantwortlich ist. Die Funktion 'onUpdate' wird ausgelöst, wenn eine Änderung vorgenommen wird. – user70192

Antwort

0

var id = choice.target.getAttribute('data-id'); auf dieser Linie choice ist undefiniert. Vielleicht ist das das Problem?

+0

versuchte das. Das ist jedoch nicht vollständig. – user70192

Verwandte Themen