2016-08-16 4 views
0

Ich versuche, Dropzone zu einem Aurelia-Projekt hinzuzufügen. Ich folgte der example von Jeremy Danyow.Dropzone-Implementierung in Aurelia funktioniert nicht in Komponente

Alles funktioniert gut, wenn ich das Projekt wie sein Beispielprojekt aufstelle. Aber ich möchte nicht alles in die main.js und main.html setzen.

Also habe ich versucht, die Dropzone-Funktionalität in eine wiederverwendbare Komponente zu kapseln und diese Komponente der main.html Ansicht hinzufügen.

main.html

<template> 
    <require from="dropzone/dropzone.min.css"></require> 
    <require from="./components/dropzone"></require> 
    <dropzone></dropzone> 
</template> 

components/dropzone.js

import dropzone from 'dropzone'; 

export class Dropzone { 

    attached() { 
    this.zone = new Dropzone(this.targetElement, { url: "/file/post"}); 
    } 
} 

components/dropzone.html

<template> 
    <h2>Dropzone from components/dropzone.js</h2> 
    <form class="dropzone" ref="targetElement"></form> 
</template> 

hinzugefügt Abhängigkeits

  "dropzone", 
      { 
      "name": "dropzone", 
      "path": "../node_modules/dropzone/dist/min", 
      "main": "dropzone.min", 
      "resources": [ 
       "dropzone.min.css" 
      ] 
      } 
aurelia.json

Leider funktioniert das nicht mehr.

Was fehlt in meinem Code?

See the project in my git account

Vielen Dank für alle Vorschläge.

+0

i Sprungplatz zu installieren versucht, durch 'npm install dropzone' und dann' Dropzone von 'dropzone' importieren; 'aber es wird 404 Fehler ausgegeben. Ich vermisse etwas zu installieren. – sibi

Antwort

1

Die vom dropzone Modul exportierte Klasse heißt 10 (siehe Kommentar unten). In diesem Fall müssen Sie Ihren eigenen Klassennamen ändern. Ich würde empfehlen DropzoneCustomElement. Lassen Sie mich wissen, ob das funktioniert:

main.html

<template> 
    <require from="dropzone/dropzone.min.css"></require> 
    <require from="./components/dropzone"></require> 
    <dropzone></dropzone> 
</template> 

Komponenten/dropzone.js

import Dropzone from 'dropzone'; 

export class DropzoneCustomElement { 

    attached() { 
    this.zone = new Dropzone(this.targetElement, { url: "/file/post"}); 
    } 
} 

Komponenten/dropzone.html

<template> 
    <h2>Dropzone from components/dropzone.js</h2> 
    <form class="dropzone" ref="targetElement"></form> 
</template> 
+0

Ich habe Ihren Vorschlag ausprobiert, aber "neue Dropzone (...)" ist der Klassenname in der 'dropzone.js' Datei. Meine Implementierung mit dem Großbuchstaben "D" funktioniert gut, wenn diese Klasse direkt aus 'main.js' erstellt wird. Sie können dies im verknüpften GIT sehen. Wenn ich richtig verstanden habe, importiere ich 'dropzone' (kleines" d "), weil ich genau die Abhängigkeit in' aurelia.json' benannt habe. –

+0

Vielen Dank für Ihre schnelle Antwort, Ashley. Das war genau das Problem. Nun, es funktioniert gut. –

+0

Hey @ChristophNoe, brauche Dropzone, aber keine Ahnung, wie ich anfangen soll, müssen wir Dropzone über jspm installieren? – sibi

Verwandte Themen