2015-11-16 5 views
11

Я бы с удовольствием реализовал Drag and Drop в моем угловом проекте, используя модуль углового-dragula (https://github.com/bevacqua/angular-dragula). Однако, похоже, он сильно зависит от RequireJS. Я не использовал Требование некоторое время, и только тогда для примера приложения или двух. Есть ли простой способ распутать Требовать от этого модуля?Использование угловой Dragula без RequireJS

Автор, кажется, считает, что это просто (https://github.com/bevacqua/angular-dragula/issues/23), и закрыл аналогичные вопросы, не имея реального объяснения. Я просмотрел код и не вижу, как загрузить модуль без добавления RequireJS в мой проект (чего я не хочу делать). Я застрял либо не используя этот модуль, либо добавляя Требовать или есть способ использовать это без Требований?

+0

Скимминг через источник выглядит так: 'dist/angular-dragula.js' зависит от требуемого, но минитипированная версия может и не быть. Пробовали ли вы использовать мини-версию, чтобы увидеть, работает ли она? – yvesmancera

+0

Да, я сделал, и это, похоже, не сработало. Частью проблемы является то, что она также ожидает, что ее инициализируют, пройдя в угловом режиме, так что мне тяжело, просто включив ее в зависимость от углового. – IAmTimCorey

+1

Я думаю, вы можете передать ему экземпляр глобальной переменной 'angular', так как' require ('angleular') 'вернет это в любом случае. – yvesmancera

ответ

22

ОК, после помощи тех, кто прокомментировал (спасибо всем!), Я смог заставить это работать. Есть пара вещей, которые вам нужно сделать. Во-первых, я связывал этот модуль с остальными модулями и пытался его назвать. Это не сработает, потому что его нужно инициализировать с помощью параметра (angular). Таким образом, вам необходимо сделать следующее:

  1. Добавить ссылку на угловой dragula.js (или мин версии) на странице index.html ниже декларации по угловым, но выше, где вы создаете приложение.
  2. Когда вы объявляете зависимости для своего приложения, укажите angularDragula(angular) (не в кавычках).
  3. Используйте dragula как обычно. Если вам нужно получить доступ к службе, имя будет angularDragula.

Например, вот моя декларация приложения:

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

А затем, чтобы получить простой список, чтобы перетащить и падение способны, это мой HTML:

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

Примечание что я не объявляю угловуюDragula нигде, в отличие от примеров. В примере, который дает автор, он требует angular и создает переменную angular, а затем он требует angular-dragula и создает переменную angularDragula. Это не нужно, если вы не используете RequireJS, пока вы загружаете скрипты в правильном порядке.

+0

Я пробовал это в своем ионном приложении. Я явно не загружаю угловое значение в моем index.html, ионный обрабатывает его. Меняет ли это так, как я это сделал? Выполнение, поскольку вы описываете 'angularDragula', возвращает' регистр функции (угловой) {... ', но называя его ошибками' не может прочитать модуль свойства 'неопределенного 'в' var app = angular.module (' dragula ', [' ng ' ]); ' –

+0

Я загружаю' dist/angular-dragula.js' после ионного, но до моего 'app.js' и объявляя' angularDragula (угловой) 'в моих зависимостях' app.js' (я пробовал оба до и после ионной зависимости без разницы). –

+1

nevermind Он работал. Я не передавал правильную зависимость моему контроллеру (dragulaService). Спасибо за отличное решение! –