我已经创建了一个angularjs应用程序与多个选择上我有上下按钮,其中当我单击向上和向下按钮相应的项目移动应完成内多重选择,我已经与普通的JavaScript该做类似的事情做得正确像如本fiddle样本的东西,但是当我试图实现AngularJS同样的东西它不是正常向上和向下移动多个选择中的元素不工作
谁能告诉我一些这方面的解决方案
我的代码如下给出
HTML
<div ng-app='myApp' ng-controller="ArrayController">
<select id="select" size="9" ng-model="persons" ng-options="item as item.name for item in peoples | orderBy:'name'" multiple></select>
<br/>
<button ng-click="moveUp()">Up</button>
<br/>
<button ng-click="moveDown()">Down</button>
<br/>
</div>
脚本
var app = angular.module('myApp', []);
app.controller('ArrayController', function ($scope) {
$scope.peoples = [{
name: 'Jacob'
}, {
name: 'Sunny'
}, {
name: 'Lenu'
}, {
name: 'Mathew'
}, {
name: 'Ferix'
}, {
name: 'Kitex'
}];
$scope.moveUp = function() {
var select = document.getElementById("select");
var i1=0, i2=1;
while (i2 < select.options.length) {
swapIf(select,i1++,i2++);
}
};
$scope.moveDown = function() {
var select = document.getElementById("select");
var i1=select.options.length-1, i2=i1-1;
while (i1 > 0) {
swapIf(select,i1--,i2--);
}
};
var swapVar = '';
function swapIf(sel,i1,i2) {
if (! select[i1].selected && select[i2].selected) {
swapVar = select[i2].text;
select[i2].text = select[i1].text;
select[i1].text = swapVar;
swapVar = select[i2].value;
select[i2].value = select[i1].value;
select[i1].value = swapVar;
select[i1].selected = true;
select[i2].selected = false;
}
}
});
可能是'排序依据:'name''引起的问题 –
@pankajparkar我们能用不同的方法,而无需使用'document.getElementById'做到这一点,你对这个 –
该控制器的任何想法代码是不好的角度练习。 DOM操作应该通过指令来完成,而不是控制器。 – tpie