2016-06-22 8 views
0

Ich bin Upload und Anzeige einer CSV-Datei mit eckigen. Die Upload-Schaltfläche/-Funktion kümmert sich um das Lesen und Parsing des CSV, so dass der HTML-Code angezeigt werden kann. Die Tabelle zeigt jedoch nicht mit dem ersten Klick an, es erfordert einen zweiten Klick der Upload-Schaltfläche zum Anzeigen. Wenn ich mich in der Konsole anmelde, wird angezeigt, dass das Array von Objekten nach dem ersten Klick erstellt wird.Upload-Funktion in AngularJs erfordert Doppelklick auf die Tabelle

vm.upload = function() { 
    var fileUpload = document.getElementById("fileUpload"); 
    var reader = new FileReader(); 
    reader.onload = function (e) { 
     var lines = e.target.result.split("\n"); 
     var result = []; 
     var headers = lines[0].split(','); 
     for(var i = 1;i<lines.length;i++){ 
      var obj = {}; 
      var currentline = lines[i].split(','); 

      for(var j = 0;j < headers.length; j++){ 
       obj[headers[j]] = currentline[j]; 

      } 
      if (obj[headers[1]] == undefined){ 
       continue; 
      } 
      result.push(obj); 

     } 
     vm.head = headers; 
     vm.data = result; 

     console.log(result); 
     console.log(headers) 
     console.log(vm.data) 
    } 
    reader.readAsText(fileUpload.files[0]); 
    vm.editTable = false 
    vm.display = true; 

}; 
+0

Einige weiteren Details wären hilfreich. Was ist 'vm'? Erwarten Sie, dass Ihre Tabelle angezeigt wird, indem Sie 'vm.data' einstellen? Wenn ja, hast du das mit der js-Konsole versucht, um zu sehen, ob es funktioniert? Soll 'readAsText'' reader.onload' auslösen? Wenn ja, bist du sicher, dass es das tut? Eine Geige oder ähnliches würde hier helfen. – dlsso

Antwort

0

Da Ihr Umfang Änderungen sind nicht als direkte geschieht (das heißt nicht-async) Ergebnis einer Interaktion mit dem Benutzer, haben Sie wahrscheinlich schon $ Umfang nutzen zu können. $ Anwenden ein UI-Update auslösen.

Jim Hoskins hat eine gute Blog-Post über diese:

Jim's Blog

Verwandte Themen