Javascript 在angularjs中将节点从不同数组移动到一个数组,然后再次将其移动到父数组
[![enter image description here][1][1]在angularjs中,我有不同的数组,分别命名为list1、list2、,列表3每个数组在不同的列表中使用。我有两个按钮和两个div left div显示不同的数组元素right div显示右div中的元素,所以当我单击left div中的元素并按下right按钮时,元素应该从左侧移除并插入到right div。当我按下left div中的元素并按下left按钮时元素应该从right div中删除,并且应该插入到left div和父数组中,我之前已经从父数组中删除了该数组 html代码是:Javascript 在angularjs中将节点从不同数组移动到一个数组,然后再次将其移动到父数组,javascript,html,css,angularjs,Javascript,Html,Css,Angularjs,[![enter image description here][1][1]在angularjs中,我有不同的数组,分别命名为list1、list2、,列表3每个数组在不同的列表中使用。我有两个按钮和两个div left div显示不同的数组元素right div显示右div中的元素,所以当我单击left div中的元素并按下right按钮时,元素应该从左侧移除并插入到right div。当我按下left div中的元素并按下left按钮时元素应该从right div中删除,并且应该插入到lef
<p ng-repeat="item in list1" id="attr">{{item}}</p>
<button id="btn-right" ng-click="add()">rig</button>
<button id="btn-left">left</button>
您可以这样实现 HTML页面:
<head>
<style type="text/css">
.red {
color: red;
}
</style>
</head>
<body ng-controller="MyCtrl">
<div style="float:left;border: solid;width: 48%;" align="center">
<p ng-repeat="item in list1" ng-click="insert(item,'left');
toggle = !toggle" ng-class="{'red' : toggle}">{{item}}</p>
</div>
<div style="float:right;border: solid; width: 48%;" align="center">
<p ng-repeat="item in list2" ng-click="insert(item, 'right');
toggle = !toggle" ng-class="{'red' : toggle}">{{item}}</p>
</div>
<div align="center">
<button id="btn-right" ng-click="takeRight()">Right</button>
<button id="btn-left" ng-click="takeLeft()">Left</button>
</div>
</body>
瑞德先生{
颜色:红色;
}
{{{item}
{{{item}
赖特
左边
Javascript:
$scope.list1 = ['dateleft', 'birth'];
$scope.list2 = ['dateright', 'death'];
$scope.itemsOnLeft=[];
$scope.itemsOnRight=[];
$scope.insert=function(item, to){
switch(to) {
case "left":
var index = $scope.itemsOnLeft.indexOf(item);
if ( index != -1) {
$scope.itemsOnLeft.splice(index, 1);
}
else {
$scope.itemsOnLeft.push(item);
}
break;
case "right":
var index = $scope.itemsOnRight.indexOf(item);
if ( index != -1) {
$scope.itemsOnRight.splice(index, 1);
}
else {
$scope.itemsOnRight.push(item);
}
break;
default:
console.log("Error in inserting");
}
};
$scope.takeRight=function()
{
for (var i = 0; i < $scope.itemsOnLeft.length; i++) {
var item = $scope.itemsOnLeft[i];
var index = $scope.list1.indexOf(item);
$scope.list1.splice(index, 1);
$scope.list2.push(item);
}
$scope.itemsOnLeft.length = 0;
};
$scope.takeLeft=function()
{
for (var i = 0; i < $scope.itemsOnRight.length; i++) {
var item = $scope.itemsOnRight[i];
var index = $scope.list2.indexOf(item);
$scope.list2.splice(index, 1);
$scope.list1.push(item);
}
$scope.itemsOnRight.length = 0;
};
$scope.list1=['dateleft','birth'];
$scope.list2=['dateright','death'];
$scope.itemsOnLeft=[];
$scope.itemsOnRight=[];
$scope.insert=函数(项,到){
切换(至){
案例“左”:
var index=$scope.itemsOnLeft.indexOf(item);
如果(索引!=-1){
$scope.itemsOnLeft.splice(索引1);
}
否则{
$scope.itemsOnLeft.push(项目);
}
打破
案例“权利”:
var index=$scope.itemsOnRight.indexOf(item);
如果(索引!=-1){
$scope.itemsOnRight.splice(索引1);
}
否则{
$scope.itemsOnRight.push(项目);
}
打破
违约:
日志(“插入错误”);
}
};
$scope.takeRight=函数()
{
对于(变量i=0;i<$scope.itemsOnLeft.length;i++){
var item=$scope.itemsOnLeft[i];
变量索引=$scope.list1.indexOf(项目);
$scope.list1.splice(索引1);
$scope.list2.push(项目);
}
$scope.itemsOnLeft.length=0;
};
$scope.takeLeft=函数()
{
对于(变量i=0;i<$scope.itemsOnRight.length;i++){
var item=$scope.itemsOnRight[i];
var index=$scope.list2.indexOf(项目);
$scope.list2.拼接(索引1);
$scope.list1.push(项目);
}
$scope.itemsOnRight.length=0;
};
注意:由于使用ng Repeat显示两个列表,因此不允许在列表中添加任何重复项。所以,如果您试图移动一些项目,而目的地已经有了该项目,那么您将以错误告终
希望这就是你要找的
angular.module(“堆栈”,[])
.控制器(“移动”,功能($scope){
//this.apps=功能;
$scope.leftList=[1,2,3];
$scope.rightList=[4,5,6];
左,右;
$scope.getLeft=函数(项){
左=项目;
}
$scope.getRight=函数(项){
右=项目;
}
$scope.ltr=函数(){
控制台日志(“左”,左);
if($scope.leftList.length){
$scope.leftList.forEach(函数(每个,索引){
如果(每个===左){
$scope.leftList.splice(索引,1);
}
});
$scope.rightList.push(左);
左=”;
}
}
$scope.rtl=函数(){
console.log(“右”,右);
if($scope.rightList.length){
$scope.rightList.forEach(函数(每个,索引){
如果(每个===右侧){
$scope.rightList.splice(索引1);
}
});
$scope.leftList.push(右);
右=”;
}
}
});代码>
。左,
.对{
宽度:10%;
显示:内联块;
}
butltr先生,
布特尔先生{
显示:内联块;
}
堆栈
{{item}}
ltr
rtl
{{item}}
您能为您的代码添加一个JSFIDLE吗?我已经在SUMBOLE中开发了它!实际上我不明白你的问题。请描述清楚。我有两个分区,一个在左边,一个在右边,我有两个按钮在它们之间,即rtl和ltr rtl(从右到左)和ltr(从左到右)在左div上,当我单击左div上的任何元素和ltr按钮时,我使用不同的数组显示了不同的列表。该元素应显示在右div上,当我单击右div上的元素和rtl按钮时,该元素应从左div中删除。该元素应从右div中删除,并应添加到其所在的父数组中在和之前,应该显示在左边的div中。您可以将plunker或JSFIDLE添加到这里吗!现在,如果我说,“我已经在Supreme中开发了它!”:我想添加js fiddle,但我没有时间,我必须尽快完成它。在这个解决方案中,您甚至可以一次选择多个项目。
$scope.list1 = ['dateleft', 'birth'];
$scope.list2 = ['dateright', 'death'];
$scope.itemsOnLeft=[];
$scope.itemsOnRight=[];
$scope.insert=function(item, to){
switch(to) {
case "left":
var index = $scope.itemsOnLeft.indexOf(item);
if ( index != -1) {
$scope.itemsOnLeft.splice(index, 1);
}
else {
$scope.itemsOnLeft.push(item);
}
break;
case "right":
var index = $scope.itemsOnRight.indexOf(item);
if ( index != -1) {
$scope.itemsOnRight.splice(index, 1);
}
else {
$scope.itemsOnRight.push(item);
}
break;
default:
console.log("Error in inserting");
}
};
$scope.takeRight=function()
{
for (var i = 0; i < $scope.itemsOnLeft.length; i++) {
var item = $scope.itemsOnLeft[i];
var index = $scope.list1.indexOf(item);
$scope.list1.splice(index, 1);
$scope.list2.push(item);
}
$scope.itemsOnLeft.length = 0;
};
$scope.takeLeft=function()
{
for (var i = 0; i < $scope.itemsOnRight.length; i++) {
var item = $scope.itemsOnRight[i];
var index = $scope.list2.indexOf(item);
$scope.list2.splice(index, 1);
$scope.list1.push(item);
}
$scope.itemsOnRight.length = 0;
};