npm 包 ng2-dragula 使用教程

简介

ng2-dragula 是一个 Angular 2 的拖放库,使得在网页上实现拖放功能变得容易快捷。它是 dragula 库的 Angular 2 绑定版本,是一个开源的 npm 包,可在你的 Angular 2 项目中轻松使用。

安装

在终端中输入以下命令安装 ng2-dragula:

--- ------- -----------

使用

首先,把 DragulaService 和 DragulaDirective 引入到你的组件当中:

------ - --------- - ---- ----------------
------ - -------------- - ---- --------------
------ - ---------------- - ---- --------------

------------
  --------- ---------------
  --------- -
    ---- -------------------- -----------------------
      ---- ----------- ---- -- ---------------------
    ------
  --
  ----------- ------------------
--
------ ----- ----------- -
  ------ ---------------- - -
    --------
    ---------
    ---------
    -------
    -----------
    -----
  --

  ------------------- ------------------------------ -
    ----------------------------------- -
      -------------- -----
    ---
  -
-

以上代码通过将 DragulaDirective 应用于包含 div 元素的 HTML 模板实现了拖放。dragula 属性指定了使用的组名称和模型名。 dragulaService 中的 setOptions() 方法可用于配置选项,例如此处使用了 removeOnSpill 参数,表示当拖动对象被放置时它不会被移除。

指南

ng2-dragula 提供了以下操作:

  1. 将对象从一个容器中拖到另一个容器
  2. 在同一容器中重新排序对象

为实现拖放操作,必须:

  1. 添加 DragulaDirective
  2. 创建或使用一个或多个容器来承载可拖动元素
  3. 针对容器设置 dragula 属性
  4. 可选的进行配置

详解

我们将根据上述操作列表深入了解 ng2-dragula 的使用。

添加 DragulaDirective

要使用 ng2-dragula,第一步是将其导入到组件中:

------ - ---------------- - ---- --------------

随后把 DragulaDirective 添加到组件的 directives 数组中:

----------- - ---------------- -

创建容器

容器是指在 HTML 中需要进行拖放交互的元素。通常情况下,容器可以是一个列表、一个树形结构、一个项目区域等。

-----
  --- ------------------------
    -------- ------
    -------- ------
    -------- ------
  -----
  --- ------------------------
    -------- ------
    -------- ------
    -------- ------
  -----
------

以上代码以无序列表的形式展示了两个容器,它们有相同的 dragula 属性,表明它们属于同一个组。这同样适用于拥有相同 dragula 属性的任何 HTML 元素。

配置

ng2-dragula 可以通过 setOptions() 方法进行配置。例如,加入下面代码可使拖动对象在被拖动时不消失:

------ - -------------- - ---- --------------

------------------- -------------- - --------------- -
  -------------------------------- -
    -------------------
  ---
-

这里我们配置了旗下组名为 bag 的拖放操作,在拖动对象被释放时设置了 removeOnSpill 选项为 false,这意味着当被拖动对象被释放后,它不会被自动从 DOM 中删除。

拖放模型

您可以使用 Angular 2 的 ngModel 和 ngFor指令实现一个拖放模型。其工作原理类似于组件中的数据模型,为 HTML 元素与组件中的代码提供了绑定关系。

---- -------------------- -----------------------
  ---- ----------- ---- -- --------- ---- --------
------

这里使用了 draguladragulaModel 指令,其中 dragula 指定了组名称,并且 dragulaModel 与组件代码中的 items 模型进行了绑定。在 for循环内,使用 item 显示列表中的每个项目。

事件

ng2-dragula 还提供了一些事件,可以在拖放的过程中或者结束时触发。事件的处理方式与 Angular 2 中常规事件的处理方式相同,只需为容器代码指定事件处理程序即可。

以下代码演示了如何在拖动元素时在控制台上输出信息:

------------------- ------------------------------ -
  ----------------------------------------- -- -
    ------------------ --------------
  ---
-

在该代码中,我们使用了 drag 事件,并把 console.log() 作为一个订阅者。在控制台上,您可以看到有关运动中拖动对象的信息。

示例代码

该例子实现了在多个 div 元素之间进行拖放。当拖放操作完成时,使用了一个小动画来演示交互。这里使用的是 ng2-dragula 和 Angular 2。

------ - ---------- ----------------------- - ---- ----------------
------ - -------------- - ---- --------------

------------
  ---------------- -------------------------------
  --------- -----------
  ---------- -----------------
  ------------ -------------------------
--
------ ----- ---------------- -
  ------------------- - -
    ---- ---------- ----- -----------
    ---- ---------- ----- -------- ----------
    ---- ------- ----- --------
    ---- ------- ----- --------
    ---- ------- ----- ----------
    ---- --------- ----- ----------
    ---- --------- ----- ----------
    ---- ---------- ----- -------- --------
    ---- -------- ----- ------ --------
    ---- ------- ----- ----------
  --
  ----------------- - -
    ---- -------- ----- ------ ---------
    ---- ------- ----- ----- -------
    ---- -------- ----- ------ -------
    ---- ------- ----- ------ ---- ----------
    ---- -------------- ----- ---------------
    ---- ------ ----- ---- ----------
    ---- --------- ----- ----------
    ---- -------- ----- ---------
    ---- ------- ----- ----- -----------
    ---- ------ ----- -------
    ---- ------ ----- ------
  --

  -- --- --- --------- ---- -- ----- -- ----------- ----- ------ ---- --- ------- -------
  -----------------------------
  ---------------------------

  ------------------- ------------------------------ -

    ----- ----------- - ---------------
    ----- --------- - -------------

    --------------------------------------- -
      -------- ---- ------- ------- -----------
        ------ ------- --- ----- -- -------- -- --- ---- -------- -- ---
      -
    ---

    ------------------------------------- -
      -------- ---- ------- ------- -----------
        ------ ------- --- ----- -- -------- -- --- ---- -------- -- ---
      -
    ---

    ---------------------- - ----------------------
    -------------------- - --------------------

    ------------------------------------- -- -
      -- ---- -- ---- --- --- -- --------
      -- --- ----- -- - ----- --- --- ----
      --- ------ - ---------
      --- ------ - ---------
      --- ----------- - ----------------
      --- ----------- - ----------------
      --- ---- - ----------------------
      -- ----- ------ ---------- --- ------- ----- -- --- -------
      ----------------
        ---------------------------- ---
        ---------------------------- -- ------
      -- ---
    ---
  -
-

以下是示例代码的 HTML 模板:

----
  ----------- - -------- --- ------------
-----
------------- -------------
---- ---------------------- ---------------------------
  ---- ----------- ---- -- -------------------
    ---- ----------------------------
      -------------
    ------
  ------
------
---------------------
---- ----------------------- -------------------------
  ---- ----------- --- -- -----------------
    ---- -----------------------------
      ------------
    ------
    ---- ---------------------------------
      ------------
    ------
  ------
  ---- ----------- --- -------- ------- --- ------ ---
  ---- ---------------------------- ----------------------------
------

示例代码运行效果如下:

总结

ng2-dragula 是一个简单易用、灵活的拖放库,使用起来非常方便,可以极大地减少开发时间。本篇文章详细介绍了 ng2-dragula 的安装与使用,对于正在学习 Angular 2 的开发者来说,是一个非常不错的选择。希望这篇文章能对大家进行介绍、指导和启发。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/ng2-dragula


猜你喜欢

  • npm 包 storybook-addon-themes 使用教程

    前言 在前端开发过程中,UI 设计是非常重要的一环。在大型项目中,我们经常会遇到需要根据设计稿切换不同的主题风格的需求。这时候,我们可以使用 npm 包 storybook-addon-themes ...

    5 年前
  • npm 包 require-context.macro 使用教程

    前言 在前端开发中,我们经常需要对文件进行遍历和操作。而 require-context.macro 就是一个能够批量加载文件的 npm 包。 使用这个包,我们可以非常方便地从一个文件夹中读取出所有的...

    5 年前
  • npm 包 react-app-rewire-postcss 使用教程

    在现代的前端开发中,使用预处理器来编写 CSS 已经是一种越来越流行的方式。而相比于其他预处理器,PostCSS 具有更高的可扩展性和灵活性,可以通过插件来提供更多的功能。

    5 年前
  • npm 包 jest-enzyme 使用教程

    随着前端技术的不断发展,测试也变得越来越重要。而 jest-enzyme 是一个可以让你更加轻松地进行前端测试的工具。本文将会详细讲解如何使用 jest-enzyme 进行测试,并且给出一些示例代码和...

    5 年前
  • npm 包 @types/react-collapse 使用教程

    前言 在前端开发中,当我们需要实现内容收缩展开的效果时,常常会使用到一些第三方库,比如 react-collapse。然而,在使用这些库的时候,我们可能会遇到一些类型定义不清晰、不完善的问题。

    5 年前
  • npm 包 @storybook/addon-storyshots-puppeteer 使用教程

    前言 在前端开发中,我们经常需要测试自己的代码是否能够正常运行,以及是否符合设计要求。而随着项目的不断扩大,测试工作变得越来越繁琐。其中,视觉测试是十分重要而且难以避免的环节,因为人们往往更加相信自己...

    5 年前
  • npm 包 react-collapse 使用教程

    简介 react-collapse 是一个基于 React 的 npm 包,用于创建可折叠的 HTML 元素,使用户在页面上能够自由地隐藏和显示一些信息,从而使页面更加清晰简洁。

    5 年前
  • npm包 `bem-cn` 的使用教程

    简介 bem-cn是一个node.js的npm包,它提供了一种方便的方式来定义BEM(块元素修饰符)类名,以及更容易地在React或其他前端框架中使用这些类名。它可以使HTML和CSS更易于阅读和维护...

    5 年前
  • npm 包 @drieam/ui-icons 使用教程

    介绍 @drieam/ui-icons 是一个为前端开发者打造的一款图标库,提供大量常用图标和易于使用的 API,使开发者可以轻松地在项目中使用图标,节省开发时间和资源。

    5 年前
  • npm 包 rollup-plugin-auto-external 使用教程

    介绍 在前端开发中,打包工具是不可避免的。rollup 是一个 JavaScript 模块打包工具,与 webpack 类似,但 rollup 更适用于打包库和组件,并可以生成更小、更快的包。

    5 年前
  • npm 包 jest-chain 使用教程

    在前端开发中,经常需要编写测试用例来保证代码的正确性和稳定性。而使用 Jest 进行测试时,jest-chain 提供了一种链式调用的方式,可以更加直观和简洁地编写测试代码。

    5 年前
  • npm 包 @bleushan/eslint-config 使用教程

    前言 在前端开发过程中,代码的质量和规范性是非常重要的。其中,ESLint 是一款强大的 JavaScript 代码检查工具,它可以通过规则来检查代码是否符合团队制定的代码规范。

    5 年前
  • npm 包 @bleushan/babel-eslint 使用教程

    简介 在前端编程中,我们需要使用 ESLint 工具来进行代码质量检查。而 Babel 则是前端生态中使用较为广泛的代码转换工具。Babel 可以将新的 JavaScript 特性转换成能够在当前浏览...

    5 年前
  • npm 包 type-enforcer-test-helper 使用教程

    前言 在前端开发中,我们常常需要使用到各种各样的类型检查工具,以便保证代码的健壮性和可靠性。而在 JavaScript 中,type-enforcer-test-helper 是一款非常实用的 npm...

    5 年前
  • npm 包 karma-webpack-bundle 使用教程

    在前端开发中,我们经常需要进行单元测试和集成测试。为了方便地进行测试,在实现模块化开发时,我们常常使用 webpack 进行模块打包。而 karma-webpack-bundle 就是一个方便的 np...

    5 年前
  • npm 包 exec-each 使用教程

    在前端开发中,我们常常需要对一组文件或文件夹执行一些操作,例如批量修改文件名、删除多个文件、复制多个文件等。手动操作这些文件费时费力,特别是当文件数量很多时。但是通过编写 JS 脚本进行操作又会涉及到...

    5 年前
  • npm 包 dmd-readable 使用教程

    在前端开发中,文档的编写是至关重要的一环。dmd-readable 是一个 npm 包,它的作用是可以将 jsdoc 注释生成的文档转化为易读的 HTML 文档。本文将详细介绍 npm 包 dmd-r...

    5 年前
  • npm 包 object-agent 使用教程

    在前端开发中,处理对象是经常进行的操作,因此一个好用的对象操作工具包是必不可少的。npm 上有许多优秀的对象操作包,其中一个值得推荐的是 object-agent。

    5 年前
  • npm 包 @dolittle/babel-plugin-transform-no-prototype-alias 使用教程

    在前端开发中,babel 是一个非常重要的工具。它能够将 ES6+ 的代码转换成 ES5 的代码,使我们的代码可以在更多的浏览器中运行。而 @dolittle/babel-plugin-transfo...

    5 年前
  • npm 包 sinon-chai-in-order 使用教程

    简介 sinon-chai-in-order 是一个用于 JavaScript 测试的 npm 包。它提供了一种方式来验证 sinon stub 和 spy 等测试框架在正确的顺序下调用的情况。

    5 年前

相关推荐

    暂无文章