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 相关文章推荐
解决AJAX中跨域访问出现'没有权限'的错误
Aug 20 Javascript
javascript工厂方式定义对象
Dec 26 Javascript
JavaScript中对象property的删除方法介绍
Dec 30 Javascript
js简单倒计时实现代码
Apr 30 Javascript
json实现添加、遍历与删除属性的方法
Jun 17 Javascript
vue富文本编辑器组件vue-quill-edit使用教程
Sep 21 Javascript
微信小程序之裁剪图片成圆形的实现代码
Oct 11 Javascript
Vue实现一个无限加载列表功能
Nov 13 Javascript
javascript实现遮罩层动态效果实例
May 14 Javascript
vue data对象重新赋值无效(未更改)的解决方式
Jul 24 Javascript
JS操作JSON常用方法(10w阅读)
Dec 06 Javascript
js实现碰撞检测
Jan 29 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递归创建目录的方法
2015/02/02 PHP
PHP会话处理的10个函数
2015/08/11 PHP
PHP人民币金额转大写实例代码
2015/10/02 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
2019/12/01 PHP
php使用redis的有序集合zset实现延迟队列应用示例
2020/02/20 PHP
各种常用的JS函数整理
2013/10/25 Javascript
jQuery显示和隐藏 常用的状态判断方法
2015/01/29 Javascript
基于Jquery实现万圣节快乐特效
2015/11/01 Javascript
讲解JavaScript的Backbone.js框架的MVC结构设计理念
2016/02/14 Javascript
jQuery侧边栏实现代码
2016/05/06 Javascript
学习使用Bootstrap页面排版样式
2017/05/11 Javascript
vue2.0结合Element实现select动态控制input禁用实例
2017/05/12 Javascript
React Native中TabBarIOS的简单使用方法示例
2017/10/13 Javascript
vue图片上传组件使用详解
2019/12/23 Javascript
Vue开发环境跨域访问问题
2020/01/22 Javascript
JavaScript或jQuery 获取option value值方法解析
2020/05/12 jQuery
vue v-on:click传递动态参数的步骤
2020/09/11 Javascript
python贪婪匹配以及多行匹配的实例讲解
2018/04/19 Python
利用python Selenium实现自动登陆京东签到领金币功能
2019/10/31 Python
Python中base64与xml取值结合问题
2019/12/22 Python
Python 实现Image和Ndarray互相转换
2020/02/19 Python
python实现最速下降法
2020/03/24 Python
Python如何把十进制数转换成ip地址
2020/05/25 Python
PyTorch: Softmax多分类实战操作
2020/07/07 Python
CSS3制作精致的照片墙特效
2016/06/07 HTML / CSS
美国高级工作服品牌:Carhartt
2018/01/25 全球购物
Daniel Wellington官方海外旗舰店:丹尼尔惠灵顿DW手表
2018/02/22 全球购物
优衣库美国官网:UNIQLO美国
2018/04/14 全球购物
瑞士图书网站:Weltbild.ch
2019/09/17 全球购物
Vinatis德国:法国领先的葡萄酒邮购公司
2020/09/07 全球购物
数控专业个人求职信范文
2014/02/05 职场文书
班组长岗位职责
2014/03/03 职场文书
中学生寄语大全
2014/04/03 职场文书
个人整改方案范文
2014/10/25 职场文书
运动会100米广播稿
2015/08/19 职场文书
幼儿园班级管理心得体会
2016/01/07 职场文书