【问题标题】:Using Angular Dragula without RequireJS在没有 RequireJS 的情况下使用 Angular Dragula
【发布时间】:2015-11-16 20:57:17
【问题描述】:

我很想在我的 Angular 项目中使用 angular-dragula 模块 (https://github.com/bevacqua/angular-dragula) 实现拖放。但是,它似乎严重依赖 RequireJS。我已经有一段时间没有使用 Require 了,然后才使用一两个示例应用程序。有没有一种简单的方法可以从这个模块中解开 Require?

作者似乎认为它很简单(https://github.com/bevacqua/angular-dragula/issues/23)并且在没有真正解释的情况下也关闭了类似的问题。我查看了代码,看不到如何在不将 RequireJS 添加到我的项目(我不想这样做)的情况下加载模块。我是否坚持不使用这个模块或添加 Require 或者有没有办法在没有 Require 的情况下使用它?

【问题讨论】:

  • 浏览源代码,看起来dist/angular-dragula.js 依赖于require,但缩小版本可能不会。您是否尝试过使用缩小版来查看它是否有效?
  • 是的,我做到了,但似乎没有用。部分问题是它还期望通过传入 angular 来初始化,所以我很难将它作为 angular 的依赖项包含在内。
  • 我认为您可以将全局变量 angular 的实例传递给它,因为 require('angular') 无论如何都会返回它。
  • 试试AMD clean。让我们知道这是否有效。
  • 我在下面发布了我的答案。如果所有内容都以正确的顺序加载并且您使用作者创建的变量名称,我们可以绕过 require。至于 AMD clean,我没有达到尝试的地步。感谢大家的帮助。

标签: javascript angularjs requirejs dragula


【解决方案1】:

好的,在那些评论的人的帮助下(谢谢大家!),我能够让它工作。您需要做几件事。首先,我将这个模块与我的其他模块捆绑在一起并尝试调用它。这将不起作用,因为它需要使用参数 (angular) 进行初始化。因此,您需要执行以下操作:

  1. 在 index.html 页面中添加对 angular-dragula.js(或最小版本)的引用,在 angular 声明下方但在您创建应用的位置上方。
  2. 当您声明应用的依赖项时,请指定 angularDragula(angular)(不在引号中)。
  3. 像往常一样使用dragula。如果您需要访问该服务,则名称为angularDragula

例如,这里是我的 app 声明:

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>

请注意,与示例不同,我没有在任何地方声明 angularDragula。在作者给出的示例中,他需要angular 并创建angular 变量,然后他需要angular-dragula 并创建angularDragula 变量。如果您不使用RequireJS,则不需要这样做,只要您以正确的顺序加载脚本即可。

【讨论】:

  • 我正在我的 ionic 应用程序中尝试这个。我没有在我的 index.html 中明确加载角度,离子处理它。这会改变我这样做的方式吗?按照您的描述进行操作angularDragula 返回function register(angular) {...,但在var app = angular.module('dragula', ['ng']); 处调用错误cannot read property 'module' of undefined
  • 我在 ionic 之后但在我的 app.js 之前加载 dist/angular-dragula.js 并在我的 app.js 依赖项中声明 angularDragula(angular)(我在加载 ionic 依赖项之前和之后都尝试过没有区别)。
  • 没关系它正在工作。我没有将正确的依赖项传递给我的控制器(dragulaService)。感谢您的出色解决方案!
  • 是的,它有效!但现在我所有的测试都失败了:错误:ReferenceError:找不到变量:angularDragula
猜你喜欢
  • 1970-01-01
  • 2016-08-11
  • 1970-01-01
  • 2016-05-15
  • 2019-11-13
  • 2015-11-28
  • 2018-07-08
  • 1970-01-01
  • 2019-07-23
相关资源
最近更新 更多