Die allgemeine Frage:DropzoneJS mit div Tabellenlayout
Wie kann ich die zusätzliche Zeile in meinem Sprungplatz bekommen die volle Breite der Tabelle zu füllen, wenn sie standardmäßig ist in einem Element gewickelt ist, dass mein Tisch Layout ruiniert .
Erläuterung:
Ich versuche DropzoneJS zu bekommen hochgeladenen Dateien in einem Tabellenformat anzeigen. Meine Dropzone befindet sich korrekt auf meinem Tisch, aber ich kann das previewTemplate nicht korrekt darstellen. Zunächst einmal stellt sich die Frage, weil Dropzone-Dateien hinzufügen kann nicht auf ein <td></td>
Element, so umgewandelt ich meine Tabelle in eine Tabelle Layout-Format wie diese mit CSS
<div class="div-tr">
<div class="div-td"></div>
<div class="div-td"></div>
</div>
Mein Ziel daher eine previewTemplate zu DropzoneJS hinzuzufügen, ist die aussehen würde wie diese
<div class="div-tr">
<div class="div-td">
<i class="fa fa-file-o"></i>
</div>
<div class="div-td">
<div class="dz-filename">
<span data-dz-name></span>
</div>
</div>
<div class="div-td">
<div class="dz-size" data-dz-size></div>
</div>
<div class="div-td">
<div class="dz-progress">
<span class="dz-upload" data-dz-uploadprogress></span>
</div>
</div>
<div class="div-td">
<div class="dz-success-mark">
<span>✔</span>
</div>
<div class="dz-error-mark">
<span>✘</span>
</div>
</div>
</div>
Das Problem ist, dass Dropzone standardmäßig eine Reihe von Klassen dz-processing dz-image-preview dz-error dz-success
zu einem <div>
im previewTemplate hinzufügt. Laut den Dokumenten werden sie zu einem <div>
mit class="dz-preview"
hinzugefügt, aber unabhängig davon, ob diese Klasse existiert oder nicht, werden die anderen Klassen als erstes inneres Element des Containers hinzugefügt, in das previewTemplate eingefügt wird. Dies bedeutet, dass die previewTemplate die, sollte eine Tabellenzeile sein, verliert es Eigenschaften ist und zeigt nur noch in der Breite des ersten <div class="div-td">
+-------------+--------------+-----------+----------+
| | | | | Existing row
+-------------+--------------+-----------+----------+
| | | | | Existing row
+-------------+--------------+-----------+----------+
| | | | | Existing row
+-------------+--------------+-----------+----------+
| | | | | Existing row
+-------------+--------------+-----------+----------+
| | | | | Row added by upload
+---+---+--+--+
Dies geschieht, weil es eine zusätzliche <div>
ist hinzugefügt, dass die innere der Reihe umschließt.
sieht mein CSS für die Tabelle wie folgt
/* DIV table style */
.div-table{
display: table;
width: 100%;
background-color: #fff;
}
.div-tr{
display: table-row;
}
.div-th, .div-td {
display: table-cell;
padding: 8px 15px;
border-bottom: 1px solid #eaeff0;
vertical-align: middle;
}
.div-thead{
display: table-header-group;
font-weight: bold;
}
.div-tfoot{
display: table-footer-group;
font-weight: bold;
background-color: #fff;
}
.div-tbody{
display: table-row-group;
}
Dokumentation für das Layout hier zu finden ist: http://www.dropzonejs.com/#layout
Jede Hilfe zum Ändern der CSS oder JS geschätzt wird. nach Ihren Bedürfnissen, http://www.dropzonejs.com/#theming
Ich habe bereits versucht alles, was Sie vorschlagen, sowie alle diese Links gegangen. Ich hatte ursprünglich die ganze Sache als eine Tabelle mit realen Tabellenelementen, aber dann, nachdem ich es als eine Bower-Abhängigkeit verwendet habe, habe ich diesen Fehler 'dropzone.min.js: 1 Uncaught TypeError: a.previewElement.querySelectorAll ist keine Funktion'. Ich untersuchte das und stellte fest, dass jeder schrieb, dass es keine Tabellenelemente sein könnten. Wenn ich das von Ihnen gepostete JS-Beispiel verwende, dann bekomme ich das "innerHTML ist undefiniert", was vermutlich darauf zurückzuführen ist, dass es sich um eine Angular-App handelt. Hast du Tipps, warum diese Dinge passieren? Ich werde mehr nachforschen. – nicolaib
Es war 'TypeError: Kann die Eigenschaft 'innerHTML' von null nicht lesen, wenn ich die InnerHTML-Anweisung hinzufüge, und ich sehe, dass es weil das DOM dann nicht zum Zeitpunkt der Instanziierung geladen ist. Ich habe versucht, dies mit $ Timeout und ähnliches zu beheben, das löst das, aber ich bekomme weitere Fehler. – nicolaib
@nicolaib Ich sehe Sie herausgefunden, nur wollen, dass der Fehler Sie erhalten, wie wahrscheinlich andere Fehler, wie Sie sagen, ist, weil die Elemente noch nicht geladen sind, um dies zu vermeiden, ist meine Empfehlung zu laden Ihre Skripte an der Ende des HTML-Body, kurz vor dem '