angularjs结合html5实现拖拽功能


Posted in Javascript onJune 25, 2018

先来 看看具体效果:

angularjs结合html5实现拖拽功能

实现方法:

1.下载并引入 angularjs

2.HTML代码:

<!DOCTYPE html>
<html lang="en" ng-app="test">
<head>
  <meta charset="UTF-8">
  <title>Html5 拖拽行为和AngularJs的结合</title>
  <meta charset="utf-8"/>
  <script type="text/javascript" src="js/angular.js"></script>
  <style>
    .to-drag, .drag-stop {
      display: inline-block;
    }
  </style>
</head>
<body ng-controller="main">
<div class="to-drag">
  <ul>
    <li ng-repeat="item in list.data" ng-include="'./lefttree.html'"></li>
  </ul>
</div>
<div class="drag-stop">
  <ul>
    <li ng-repeat="item in rightList.data" ng-include="'./righttree.html'"></li>
  </ul>
</div>
</body>
</html>

3.js

<script type="text/javascript">
  let mod = angular.module("test", []);
  mod.controller("main", ['$scope', function ($scope) {
    $scope.list = {
      data: [{
        id: 1,
        name: '22',
        child: [{
          id: '1-1',
          name: '1-1_name-左'
        }, {
          id: '1-2',
          name: '1-2_name-左'
        }]
      }],
      dragstart: function (item) {
        $scope.clientInfo = item;
      }
    }
    $scope.rightList = {
      data: [{
        id: 1,
        name: '停止拖动',
        child: [{
          id: '1-1',
          name: '1-1_name-右'
        }, {
          id: '1-2',
          name: '1-2_name-右'
        }]
      }],
      drop: function (event, item) {
        event.preventDefault();
        console.log("被拖动的元素:->", $scope.clientInfo);
        console.log("当前节点:->", item);
        //调用后端添加接口,实现真实的添加。
      },
      dragover: function (event) {
        event.preventDefault();
      }
    }
  }]);
  var convertFirstUpperCase = function (str) {
    return str.replace(/(\w)/, function (s) {
      return s.toUpperCase();
    });
  };
  rubyDragEventDirectives = {};
  angular.forEach("dragstart drag dragenter dragover drop dragleave dragend".split(' '), function (eventName) {
    var rubyEventName = 'ruby' + convertFirstUpperCase(eventName);
    rubyDragEventDirectives[rubyEventName] = ['$parse', function ($parse) {
      //$parse 语句解析器
      return {
        restrict: 'A',
        compile: function (ele, attr) {
          var fn = $parse(attr[rubyEventName]);
          return function rubyEventHandler(scope, ele) {
            ele[0].addEventListener(eventName, function (event) {
              if (eventName == 'dragover' || eventName == 'drop') {
                event.preventDefault();
              }
              var callback = function () {
                fn(scope, {event: event});
              };
              callback();
            });
          }
        }
      }
    }]
  });
  mod.directive(rubyDragEventDirectives);
</script>

希望可以对大家有所帮助哦。好久都没写博客啦,嘻嘻最近变懒了,而且特别懒,哈哈哈哈,天热啦,大家多喝水哦,注意防暑。

Javascript 相关文章推荐
一页面多XMLHttpRequest对象
Jan 22 Javascript
Extjs学习笔记之六 面版
Jan 08 Javascript
基于jQuery UI CSS Framework开发Widget的经验
Aug 21 Javascript
JavaScript DOM 编程艺术(第2版)读书笔记(JavaScript的最佳实践)
Oct 01 Javascript
js的Prototype属性解释及常用方法
May 08 Javascript
完美兼容各大浏览器获取HTTP_REFERER方法总结
Jun 24 Javascript
详解js实现线段交点的三种算法
Aug 09 Javascript
vue 请求后台数据的实例代码
Jun 22 Javascript
vue脚手架搭建项目的兼容性配置详解
Jul 17 Javascript
在vue里使用codemirror遇到的问题
Nov 01 Javascript
微信运维交互机器人的示例代码
Nov 12 Javascript
深入理解使用Vue实现Context-Menu的思考与总结
Mar 09 Javascript
vue中vee validate表单校验的几种基本使用
Jun 25 #Javascript
超出JavaScript安全整数限制的数字计算BigInt详解
Jun 24 #Javascript
JS的函数调用栈stack size的计算方法
Jun 24 #Javascript
JavaScript中var、let、const区别浅析
Jun 24 #Javascript
使用JavaScript中的lodash编写双色球效果
Jun 24 #Javascript
Vue中$refs的用法详解
Jun 24 #Javascript
JS实现获取word文档内容并输出显示到html页面示例
Jun 23 #Javascript
You might like
php对gzip文件或者字符串解压实例参考
2008/07/25 PHP
PHP 可阅读随机字符串代码
2010/05/26 PHP
PHP积分兑换接口实例
2015/02/09 PHP
PHP实现的json类实例
2015/07/28 PHP
php函数mkdir实现递归创建层级目录
2016/10/27 PHP
Laravel5框架添加自定义辅助函数的方法
2018/08/01 PHP
用JS剩余字数计算的代码
2008/07/03 Javascript
js制作带有遮罩弹出层实现登录注册表单特效代码分享
2015/09/05 Javascript
AngularJs验证重复密码的方法(两种)
2016/11/25 Javascript
Angular.js项目中使用gulp实现自动化构建以及压缩打包详解
2017/07/19 Javascript
Angularjs实现多图片上传预览功能
2018/07/18 Javascript
Vue.js结合bootstrap前端实现分页和排序效果
2018/12/29 Javascript
JS判断数组四种实现方法详解
2020/06/29 Javascript
vue 组件简介
2020/07/31 Javascript
python一键升级所有pip package的方法
2017/01/16 Python
Python元组拆包和具名元组解析实例详解
2018/03/26 Python
Python 在字符串中加入变量的实例讲解
2018/05/02 Python
Python中将两个或多个list合成一个list的方法小结
2019/05/12 Python
利用python list完成最简单的DB连接池方法
2019/08/09 Python
python3调用windows dos命令的例子
2019/08/14 Python
Python3 chardet模块查看编码格式的例子
2019/08/14 Python
python打开文件的方式有哪些
2020/06/29 Python
Python绘制组合图的示例
2020/09/18 Python
碧欧泉Biotherm加拿大官方网站:法国高端护肤品牌
2019/10/18 全球购物
酒店端午节促销方案
2014/02/18 职场文书
班级旅游计划书
2014/05/03 职场文书
护理学专业求职信
2014/06/29 职场文书
健康状况证明模板
2014/10/23 职场文书
2014年服装销售工作总结
2014/11/27 职场文书
2015年感恩节活动总结
2015/03/24 职场文书
房地产财务经理岗位职责
2015/04/08 职场文书
2015年世界急救日宣传活动方案
2015/05/06 职场文书
学校隐患排查制度
2015/08/05 职场文书
PHP使用非对称加密算法RSA
2021/04/21 PHP
mysql5.5中文乱码问题解决的有用方法
2022/05/30 MySQL
win10拖拽文件时崩溃怎么解决?win10文件不能拖拽问题解决方法
2022/08/14 数码科技