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 相关文章推荐
javascript 当前日期加(天、周、月、年)
Aug 09 Javascript
传智播客学习之JavaScript基础篇
Nov 13 Javascript
JS验证控制输入中英文字节长度(input、textarea等)具体实例
Jun 21 Javascript
html5的自定义data-*属性和jquery的data()方法的使用示例
Aug 21 Javascript
js输出阴历、阳历、年份、月份、周示例代码
Jan 29 Javascript
JavaScript中的console.dir()函数介绍
Dec 29 Javascript
CSS javascript 结合实现悬浮固定菜单效果
Aug 23 Javascript
jquery获取img的src值的简单实例
May 17 Javascript
关于Ajax的原理以及代码封装详解
Sep 08 Javascript
手把手教你用Node.js爬虫爬取网站数据的方法
Jul 05 Javascript
如何使用webpack打包一个库library的方法步骤
Dec 18 Javascript
封装一下vue中的axios示例代码详解
Feb 16 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
安装APACHE
2007/01/15 PHP
PHP 输出URL的快捷方式示例代码
2013/09/22 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
javascript indexOf函数使用说明
2008/07/03 Javascript
JavaScript 异步调用框架 (Part 4 - 链式调用)
2009/08/04 Javascript
JQuery与iframe交互实现代码
2009/12/24 Javascript
兼容ie、firefox的图片自动缩放的css跟js代码分享
2012/01/21 Javascript
情人节专属 纯js脚本1k大小的3D玫瑰效果
2012/02/11 Javascript
JavaScript实现网页上的浮动广告的简单方法
2013/06/14 Javascript
javascript 得到文件后缀名的思路及实现
2020/05/09 Javascript
浅析Node.js中使用依赖注入的相关问题及解决方法
2015/06/24 Javascript
AngularJS中如何使用$http对MongoLab数据表进行增删改查
2016/01/23 Javascript
学习vue.js中class与style绑定
2016/12/03 Javascript
vue.js $refs和$emit 父子组件交互的方法
2017/12/20 Javascript
微信小程序云开发实现云数据库读写权限
2019/05/17 Javascript
一文了解vue-router之hash模式和history模式
2019/05/31 Javascript
VUE渲染后端返回含有script标签的html字符串示例
2019/10/28 Javascript
Vue实现push数组并删除的例子
2019/11/01 Javascript
python中cPickle类使用方法详解
2018/08/27 Python
对python cv2批量灰度图片并保存的实例讲解
2018/11/09 Python
Django模型序列化返回自然主键值示例代码
2019/06/12 Python
python pandas cumsum求累计次数的用法
2019/07/29 Python
Python实现朴素贝叶斯的学习与分类过程解析
2019/08/24 Python
python 使用pdfminer3k 读取PDF文档的例子
2019/08/27 Python
详解centos7+django+python3+mysql+阿里云部署项目全流程
2019/11/15 Python
Python如何将函数值赋给变量
2020/04/28 Python
定义css设备类型-Media Queries图表简介及使用方法
2013/01/21 HTML / CSS
装饰资料员岗位职责
2013/12/30 职场文书
咖啡馆创业计划书
2014/01/26 职场文书
个人查摆剖析材料
2014/10/04 职场文书
师德先进个人材料
2014/12/20 职场文书
2015年思想品德教学工作总结
2015/07/22 职场文书
2016学习医德医风心得体会
2016/01/25 职场文书
完美处理python与anaconda环境变量的冲突问题
2021/04/07 Python
opencv-python图像配准(匹配和叠加)的实现
2021/06/23 Python
PyTorch device与cuda.device用法
2022/04/03 Python