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 相关文章推荐
广告显示判断
Aug 31 Javascript
javascript基础的动画教程,直观易懂
Jan 10 Javascript
解析jQuery的三种bind/One/Live事件绑定使用方法
Dec 30 Javascript
node.js中的http.response.setHeader方法使用说明
Dec 14 Javascript
jQuery中prop()方法用法实例
Jan 05 Javascript
javascript实现复选框超过限制即弹出警告框的方法
Feb 25 Javascript
JQuery实现的按钮倒计时效果
Dec 23 Javascript
js以及jquery实现手风琴效果
Apr 17 Javascript
jQuery实现checkbox的简单操作
Nov 18 jQuery
微信小程序自定义组件的实现方法及自定义组件与页面间的数据传递问题
Oct 09 Javascript
JS原形与原型链深入详解
May 09 Javascript
Vue中避免滥用this去读取data中数据
Mar 02 Vue.js
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
电脑硬件及电脑配置知识大全
2020/03/17 数码科技
PHP的fsockopen、pfsockopen函数被主机商禁用的解决办法
2014/07/08 PHP
使用Entrust扩展包在laravel 中实现RBAC的功能
2020/03/16 PHP
javascript编程起步(第二课)
2007/01/10 Javascript
一个js封装的不错的选项卡效果代码
2008/02/15 Javascript
javascript 操作cookies及正确使用cookies的属性
2009/10/15 Javascript
关于javascript function对象那些迷惑分析
2011/10/24 Javascript
JavaScript prototype 使用介绍
2013/08/29 Javascript
Jquery下EasyUI组件中的DataGrid结果集清空方法
2014/01/06 Javascript
jQuery实现模拟marquee标签效果
2015/07/14 Javascript
日常收藏的jquery技巧
2015/12/02 Javascript
js判断移动端是否安装某款app的多种方法
2015/12/18 Javascript
jQuery中ajax的load()与post()方法实例详解
2016/01/05 Javascript
jquery  实现轮播图详解及实例代码
2016/10/12 Javascript
jQuery中Chosen三级联动功能实例代码
2017/03/07 Javascript
Angularjs实现页面模板清除的方法
2018/07/20 Javascript
JavaScript函数节流和函数去抖知识点学习
2018/07/31 Javascript
详解Vue3中对VDOM的改进
2020/04/23 Javascript
Python multiprocessing.Manager介绍和实例(进程间共享数据)
2014/11/21 Python
CentOS安装pillow报错的解决方法
2016/01/27 Python
Python中将dataframe转换为字典的实例
2018/04/13 Python
详解python异步编程之asyncio(百万并发)
2018/07/07 Python
使用Python实现在Windows下安装Django
2018/10/17 Python
学习python分支结构
2019/05/17 Python
pygame库实现俄罗斯方块小游戏
2019/10/29 Python
python的等深分箱实例
2019/11/22 Python
Keras使用tensorboard显示训练过程的实例
2020/02/15 Python
办公室内勤工作职责
2013/12/11 职场文书
《长相思》听课反思
2014/04/10 职场文书
大学生学习面向未来的赶考思想汇报
2014/09/12 职场文书
交通事故委托书范本(2篇)
2014/09/21 职场文书
服务员态度差检讨书
2014/10/28 职场文书
鼋头渚导游词
2015/02/05 职场文书
革命电影观后感
2015/06/18 职场文书
如何用PHP实现多线程编程
2021/05/26 PHP
《雀魂PONG☆》4月1日播出 PV角色设定情报
2022/03/20 日漫