Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用按钮的角度拖放元素_Javascript_Jquery_Angularjs - Fatal编程技术网

Javascript 使用按钮的角度拖放元素

Javascript 使用按钮的角度拖放元素,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我有一个列表,当我点击按钮时,值正在按预期移动。但当我单击submit按钮时,所选的id不会附加到数据库中。我试着做同样的例子,也做了一些研发。但我没有得到预期的结果。我不知道怎么了。非常感谢任何逻辑/建议 Angularjs: var app = angular.module('myApp', []); app.controller('Controller', function ($scope) { $scope.moveUp = function () { for(var i

我有一个列表,当我点击按钮时,值正在按预期移动。但当我单击submit按钮时,所选的id不会附加到数据库中。我试着做同样的例子,也做了一些研发。但我没有得到预期的结果。我不知道怎么了。非常感谢任何逻辑/建议

Angularjs:

var app = angular.module('myApp', []);
app.controller('Controller', function ($scope) {
$scope.moveUp = function () {
        for(var i = 0; i < $scope.vehicle.length; i++) {
            var idx = $scope.peoples.indexOf($scope.vehicle[i])
            console.log(idx);
            if (idx > 0) {
                var itemToMove = $scope.cars.splice(idx, 1)
                console.log(itemToMove[0])
                $scope.cars.splice(idx-1, 0, itemToMove[0]);

            }
        }
    };

   $scope.moveDown = function () {
       var revVeh = $scope.vehicle.concat();
       revVeh.reverse();
        for(var i = 0; i < revVeh.length; i++) {
            var idx = $scope.cars.indexOf(revVeh[i])
            console.log(idx);
            if (idx < $scope.cars.length) {
                var itemToMove = $scope.cars.splice(idx, 1)
                console.log(itemToMove[0])
                $scope.cars.splice(idx+1, 0, itemToMove[0]);

            }
        }
    };    
}); 
var-app=angular.module('myApp',[]);
应用程序控制器('controller',函数($scope){
$scope.moveUp=函数(){
对于(变量i=0;i<$scope.vehicle.length;i++){
var idx=$scope.people.indexOf($scope.vehicle[i])
console.log(idx);
如果(idx>0){
var itemToMove=$scope.cars.splice(idx,1)
console.log(itemToMove[0])
$scope.cars.splice(idx-1,0,itemToMove[0]);
}
}
};
$scope.moveDown=函数(){
var revVeh=$scope.vehicle.concat();
revVeh.reverse();
对于(变量i=0;i

这是我的plnkr示例()

我为您的问题和答案创建了这个插件

或代码

HTML代码:

<!DOCTYPE html>
<html ng-app="app">

  <head>
    <script data-require="angular.js@1.4.9" data-semver="1.4.9" src="https://code.angularjs.org/1.4.12/angular.js"></script>
    <link rel="stylesheet" href="style.css" />
    <script src="script.js"></script>
  </head>

  <body ng-controller="main">
    <options-up-down-directive option-to-process-up-down-of-keys="optionData" 
    option-to-select="dataToSelect1" class="col-5">
    </options-up-down-directive>
  </body>

</html>

JAVASCRIPT代码:

var app = angular.module('app', []);

app.controller('main', function($scope){
   $scope.optionData = ['abc', 'xyz', 'TDS'];
   $scope.dataToSelect1 = {};
});

app.directive('optionsUpDownDirective',optionsUpDownDirective);

function optionsUpDownDirective() {

    var directiveController = function($scope) {

        var selfController = this;
        var optionToProcessUpDownOfKeys = [];
        var itemToMove = null;
        $scope.optionToSelect.selectedData = null;

        $scope.keyToMoveUpAndDown = $scope.optionToProcessUpDownOfKeys[0];

        selfController.moveKeyUpAndDown = function(mode) {
            optionToProcessUpDownOfKeys = $scope.optionToProcessUpDownOfKeys;
            for(var i = 0, keysLength = $scope.optionToProcessUpDownOfKeys.length; i < keysLength; i++) {
                if(optionToProcessUpDownOfKeys[i] == $scope.keyToMoveUpAndDown) {
                    var index = i;
                    console.log($scope.optionToSelect);
                    if ( index > 0  && mode === 'up') {
                        $scope.optionToSelect.selectedData = optionToProcessUpDownOfKeys.splice(index, 1);
                        $scope.optionToProcessUpDownOfKeys.splice(index-1, 0, $scope.optionToSelect.selectedData[0]);
                    } else if(mode === 'down'){
                        $scope.optionToSelect.selectedData = optionToProcessUpDownOfKeys.splice(index, 1);
                        $scope.optionToProcessUpDownOfKeys.splice(index+1, 0, $scope.optionToSelect.selectedData[0]);
                    }
                    break;
                }
            }
        };


    };


    return {
        restrict : 'E',
        scope : {
            optionToProcessUpDownOfKeys : "=?optionToProcessUpDownOfKeys",
            optionToSelect: "=?optionToSelect"
        },
        template :`<select id="select" size="7" ng-model="keyToMoveUpAndDown" ng-options="key for key in optionToProcessUpDownOfKeys" ng-click="keyToChangeCtrl.enableUpOrDownButton(keyToMoveUpAndDown)">
        </select>
        <button ng-click="keyToChangeCtrl.moveKeyUpAndDown('up')" class="local-action-button" id="moveUp">
        <i class="glyphicon glyphicon-arrow-up button-glyphicon-label-dis"></i>UP</button>
    <button ng-click="keyToChangeCtrl.moveKeyUpAndDown('down')" class="local-action-button" id="moveDown">
        <i class="glyphicon glyphicon-arrow-down button-glyphicon-label-dis"></i>DOWN</button>
    </div>`,
    controller : ['$scope', directiveController],
        controllerAs : "keyToChangeCtrl"
    };
}
var-app=angular.module('app',[]);
应用控制器('main',函数($scope){
$scope.optionData=['abc','xyz','TDS'];
$scope.dataToSelect1={};
});
应用指令(“optionsUpDownDirective”,optionsUpDownDirective);
函数选项UpDownDirective(){
var directiveController=函数($scope){
var selfController=this;
var optionProcessUpDownofKeys=[];
var itemToMove=null;
$scope.optionSelect.selectedData=null;
$scope.keyToMoveUpAndDown=$scope.OptionProcessUpDownofKeys[0];
selfController.moveKeyUpAndDown=功能(模式){
optionProcessUpDownofKeys=$scope.optionProcessUpDownofKeys;
for(变量i=0,keysLength=$scope.optionProcessUpDownofKeys.length;i0&&mode=='up'){
$scope.optionSelect.selectedData=optionProcessUpDownofKeys.splice(索引,1);
$scope.optionProcessUpDownofKeys.splice(索引-1,0,$scope.optionSelect.selectedData[0]);
}否则,如果(模式==='down'){
$scope.optionSelect.selectedData=optionProcessUpDownofKeys.splice(索引,1);
$scope.optionProcessUpDownofKeys.splice(索引+1,0,$scope.optionSelect.selectedData[0]);
}
打破
}
}
};
};
返回{
限制:'E',
范围:{
OptionProcessUpDownofKeys:“=?OptionProcessUpDownofKeys”,
OptionSelect:“=?OptionSelect”
},
模板:`
向上的
向下
`,
控制器:['$scope',directiveController],
controllerAs:“keyToChangeCtrl”
};
}

至少在您的plunkr中,
$scope.people
未定义,因此您在控制台中遇到了一个错误,它什么也不做。它没有提交按钮,所以我们不知道会发生什么。请在文件中提供适当的详细信息。这是一个打字错误。实际上,我没有获得在提交按钮中传递所选id的正确逻辑@PhiLho@vipe,您自己得到了答案,或者您仍然需要帮助,因为我已经为我的项目完成了类似的实现。所以请告诉我。实际上我已经做了一个指示。实现一次并多次使用。检查答案部分,我已经创建了plunker,也复制了代码。