2015-11-16 8 views
11

Ich würde gerne Drag and Drop in meinem eckigen Projekt mit dem eckigen-Dragula-Modul (https://github.com/bevacqua/angular-dragula) implementieren. Es scheint jedoch stark abhängig von RequireJS zu sein. Ich habe Require für eine Weile nicht gebraucht und nur dann für eine oder zwei Beispielapps. Gibt es eine einfache Möglichkeit, Require von diesem Modul zu entwirren?Verwenden von eckigen Dragula ohne RequireJS

Der Autor scheint zu denken, dass es einfach ist (https://github.com/bevacqua/angular-dragula/issues/23) und hat ähnliche Fragen auch ohne eine echte Erklärung heruntergefahren. Ich habe mir den Code angesehen und sehe nicht, wie ich das Modul laden kann, ohne RequireJS zu meinem Projekt hinzuzufügen (was ich nicht tun möchte). Bin ich dabei, entweder dieses Modul nicht zu benutzen oder Require hinzuzufügen oder gibt es eine Möglichkeit, dies ohne Require zu benutzen?

+0

Beim Durchstreichen der Quelle sieht es so aus, als ob "dist/angular-dragula.js" von "require" abhängig ist, aber bei der verkleinerten Version nicht. Haben Sie versucht, die verkleinerte Version zu verwenden, um zu sehen, ob es funktioniert? – yvesmancera

+0

Ja, ich tat es und es schien nicht zu funktionieren. Teil des Problems ist, dass es auch erwartet, initialisiert zu werden, indem man eckig eingibt, also habe ich eine harte Zeit gerade, die es als eine Abhängigkeit in eckig einschließe. – IAmTimCorey

+1

Ich denke, Sie können es eine Instanz der globalen Variablen 'angular' übergeben, da' require ('angular') 'das sowieso zurückgeben würde. – yvesmancera

Antwort

22

OK, nach der Hilfe von denen, die kommentiert haben (danke an alle!), War ich in der Lage, dies zur Arbeit zu bringen. Es gibt ein paar Dinge, die Sie tun müssen. Zuerst habe ich dieses Modul mit dem Rest meiner Module gebündelt und versucht, es anzurufen. Das wird nicht funktionieren, da es mit einem Parameter (angular) initialisiert werden muss. Daher müssen Sie Folgendes tun: für Winkel

  1. Fügen Sie einen Verweis auf Winkel dragula.js (oder min-Version) auf Ihrer Seite index.html unterhalb der Erklärung aber oben, wo Sie Ihre Anwendung erstellen.
  2. Wenn Sie die Abhängigkeiten für Ihre App deklarieren, geben Sie angularDragula(angular) an (nicht in Anführungszeichen).
  3. Verwenden Sie Dragula wie gewohnt. Wenn Sie auf den Dienst zugreifen müssen, lautet der Name angularDragula.

Zum Beispiel, hier meine Erklärung App ist:

var app = angular.module('app', [ 
    'ngRoute', 
    angularDragula(angular) 
]); 

Und dann eine einfache Liste zu bekommen Drag & Drop-fähig zu sein, das ist mein html:

<div dragula='"bag-one"' dragula-model="vm.items"> 
    <div ng-repeat="item in vm.items">{{ item }}</div> 
</div> 

Hinweis dass ich im Gegensatz zu den Beispielen nirgends eckigDragula deklariere. In dem Beispiel, das der Autor angibt, benötigt er angular und erstellt die angular Variable und dann erfordert er angular-dragula und erstellt die angularDragula Variable. Dies ist nicht erforderlich, wenn Sie RequireJS nicht verwenden, solange Sie die Skripts in der richtigen Reihenfolge laden.

+0

Ich versuche das in meiner ionischen App. Ich lade angular nicht explizit in meine index.html, ionische Griffe es. Ändert sich das, wie ich das machen würde? Wenn Sie 'angularDragula' beschreiben, gibt' 'function register (eckig) {...' zurück, aber Fehler ''kann' Eigenschaft 'modul' von 'undefined' bei' var app = angular.module (' dragula ', [' ng ') nicht lesen ]); ' –

+0

Ich lade' dist/angular-dragula.js' nach ionic, aber vor meiner 'app.js' und deklariere' angularDragula (eckig) 'in meinen' app.js' Abhängigkeiten (Ich habe beide ausprobiert vor und nach der Ionenabhängigkeit wird ohne Unterschied geladen). –

+1

vergiss es funktionierte. Ich habe die richtige Abhängigkeit nicht an meinen Controller (dragulaService) übergeben. Danke für die tolle Lösung! –

Verwandte Themen