Ich bin neu bei Ember.js und ich habe ein paar Probleme, seine Philosophie zu verstehen. Ich weiß, Aktionen nach oben, Daten nach unten aber im wirklichen Leben, lassen Sie mich sagen, ich habe Fotorama initialisiert in My-Galerie-Komponente (Ich weiß nicht, ob das in Ordnung ist, aber ich habe es in didInsertElement
Methode). Diese Bibliothek hat eigene Ereignisse. Sie konnten im Klar JS wie folgt aussehen:Wie behandelt man benutzerdefinierte Ereignisse in der ember.js-Komponente?
$('.fotorama').on('fotorama:ready', function (e, fotorama) {});
oder:
$('.fotorama').on('fotorama:show', function() {});
aber ich fühle mich in Ember, diese sollten irgendwie in Aktionen in der Komponente abgebildet werden. Meine Frage ist: Wie? Ich muss einige Aktionen (die von anderen Komponenten oder vielleicht einem Router erfasst werden) in diesen Aktionen auslösen. Also ich denke, es sollte so sein: this.sendAction('actionName', actionParams);
Können Sie Dokumente oder weitere Informationen bereitstellen, warum wird dieser Ansatz nicht empfohlen? – ykaragol
_didInsertElement() ist auch ein guter Ort, um Ereignislistener anzuhängen. Dies ist besonders nützlich für benutzerdefinierte Ereignisse oder andere Browserereignisse, für die kein integrierter Ereignishandler vorhanden ist._ aus [ember guide] (https://guides.emberjs.com/v2.10.0/components/the-component-lifecycle/# toc_integrieren-mit-Third-Party-Libraries-mit-Code-didoinsertelement-code) – ykaragol
Normalerweise schreibe ich Code wie diesen, wenn ich mit jquery plugins arbeite. Aber es gibt eine Vorstellung von Ember-Leuten, dass die meisten Jquery-Plugins nicht gut mit Ember spielen werden. also müssen wir es selbst schreiben ... Ich habe einfach "nicht empfohlen" hinzugefügt, um zu vermeiden, mehr Stimmen zu bekommen, haha :). @locks können uns aufklären. – kumkanillam