我已經創建了一個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