Ich weiß nicht, ob ich darüber sorgen sollte, habe ich eine benutzerdefinierte Anweisung, die ein Klick-Ereignis auf eine input[type="file"]
klickt, wenn ein div
geklickt wird, jedes Mal, wenn eine Datei gewählt wird oder der Dateiauswahldialog wird geschlossen, der Fehler wird in der Konsole angezeigt.Angularjs: zu viel Rekursion Fehler auf benutzerdefinierte Direktive
directive.js
module.directive("cropper", function(){
return {
restrict: "E",
replace: true,
templateUrl: "components/cropper/cropper-directive.html",
link: link
};
function link(scope, element, attr){
var selector = element[0].querySelector(".cropper-selector");
var input = element[0].querySelector(`input[type="file"]`);
// Trigger file input select when selector detects a click
selector.addEventListener("click", function(evt){
var clickEvent = new MouseEvent("click", {
bubbles: true,
canceable: true
}, false);
input.dispatchEvent(clickEvent);
});
}
});
directive.html
<div class="cropper">
<div class="cropper-image">
<div class="cropper-selector">
<label class="centered">Click or drop an image on this block</label>
<input type="file"></input>
</div>
</div>
<div class="cropper-actions"></div>
</div>
i nach Lösungen gesucht haben, aber all die Bedrohungen ich nur gemacht auf jQuery
gefunden haben und wie Sie sehen können, ich bin Mit den nativen Event-Listener von Javascript
, wenn dies etwas ist, worüber ich mich sorgen sollte, würde ich gerne die Lösung ohne jQuery
Methode
UPDATE: Ich habe vergessen zu erwähnen, dass input
hat display: none
so wäre es die Komponente aussehen wie ein ziehbar Drop machen Dateien
Ich frage mich nur, ob 'input' geklickt ->' cropper-selector' auch geklickt hat? – grepLines
@grepLines nein, tut mir leid, dass 'input' keine' none' anzeigt, ich aktualisiere das – nosthertus
nein ich meine wenn du die 'input' auf ein click event setzt, dann bedeutet das auch 'cropper-selector' Auslöser, der geklickt hat? dies verursacht Rekursion – grepLines