angularjs結(jié)合html5實(shí)現(xiàn)拖拽功能
先來(lái) 看看具體效果:

實(shí)現(xiàn)方法:
1.下載并引入 angularjs
2.HTML代碼:
<!DOCTYPE html>
<html lang="en" ng-app="test">
<head>
<meta charset="UTF-8">
<title>Html5 拖拽行為和AngularJs的結(jié)合</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: '停止拖動(dòng)',
child: [{
id: '1-1',
name: '1-1_name-右'
}, {
id: '1-2',
name: '1-2_name-右'
}]
}],
drop: function (event, item) {
event.preventDefault();
console.log("被拖動(dòng)的元素:->", $scope.clientInfo);
console.log("當(dāng)前節(jié)點(diǎn):->", item);
//調(diào)用后端添加接口,實(shí)現(xiàn)真實(shí)的添加。
},
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 語(yǔ)句解析器
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>
希望可以對(duì)大家有所幫助哦。好久都沒(méi)寫博客啦,嘻嘻最近變懶了,而且特別懶,哈哈哈哈,天熱啦,大家多喝水哦,注意防暑。
相關(guān)文章
angular實(shí)現(xiàn)頁(yè)面打印局部功能的思考與方法
這篇文章主要給大家介紹了關(guān)于angular實(shí)現(xiàn)頁(yè)面打印局部功能的思考與方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-04-04
Angular中使用Intersection Observer API實(shí)現(xiàn)無(wú)限滾動(dòng)效果
這篇文章主要介紹了Angular中使用Intersection Observer API實(shí)現(xiàn)無(wú)限滾動(dòng),實(shí)現(xiàn)原理為 在data下面加一個(gè)loading元素 如果此元素進(jìn)入視窗 則調(diào)用api獲取新的數(shù)據(jù)加到原來(lái)的數(shù)據(jù)里面,這時(shí)loading就會(huì)被新數(shù)據(jù)頂下去,感興趣的朋友一起看看吧2023-12-12
在AngularJS中如何使用谷歌地圖把當(dāng)前位置顯示出來(lái)
這篇文章給的大家介紹在AngularJS中如何使用谷歌地圖把當(dāng)前位置顯示出來(lái),本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,對(duì)angularjs 谷歌地圖相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧2016-01-01
Angular中的結(jié)構(gòu)指令模式及使用詳解
這篇文章主要為大家介紹了Angular中的結(jié)構(gòu)指令模式及使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
Angular2使用Augury來(lái)調(diào)試Angular2程序
這篇文章主要介紹了Angular2使用Augury來(lái)調(diào)試Angular2程序,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-05-05
angular4自定義組件非input元素實(shí)現(xiàn)ngModel雙向數(shù)據(jù)綁定的方法
這篇文章主要介紹了angular4自定義組件非input元素實(shí)現(xiàn)ngModel雙向數(shù)據(jù)綁定的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
angularjs實(shí)現(xiàn)多選框分段全選效果實(shí)現(xiàn)
這篇文章主要為大家介紹了angularjs實(shí)現(xiàn)多選框分段全選效果實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
Angular中ng-options下拉數(shù)據(jù)默認(rèn)值的設(shè)定方法
本篇文章主要介紹了Angular中ng-options下拉數(shù)據(jù)默認(rèn)值的設(shè)定方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
angular+ionic返回上一頁(yè)并刷新頁(yè)面
這篇文章主要介紹了angular+ionic返回上一頁(yè)并刷新頁(yè)面,需要的朋友可以參考下2017-08-08
AngularJS入門教程之AngularJS表達(dá)式
AngularJS應(yīng)用表達(dá)式是純javascript表達(dá)式,并輸出它們被使用的數(shù)據(jù)在那里。本文給大家介紹AngularJS入門教程之AngularJS表達(dá)式,對(duì)angularjs表達(dá)式相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧2016-04-04

