2016-05-11 16 views
-1

私はng-repeatでn個のselectを生成しています。選択肢の1つを変更すると、他の選択肢のすべてのオプションを更新する必要があります。私は投票の仕組みを作る必要があります。例:またhttps://jsfiddle.net/gvwpgtj6/2/他の選択肢を選択

<div ng-model="items"> 
    <div ng-repeat="item in items"> 
     <select ng-model="selectedPollNum" ng-change="changedPoll(selectedPollNum)"> 
      <option ng-repeat="option in items">{{ $index + 1 }}</option> 
     </select> 
     <label>{{item.name}}</label> 
    </div> 
</div> 

jsFiddle:選択の数が動的である

Init: 
- select 1: 1,2,3,4 
- select 2: 1,2,3,4 
- select 3: 1,2,3,4 
- select 4: 1,2,3,4 

After change select 1: 
- select 1: 2 (selected) 
- select 2: 1,3,4 
- select 3: 1,3,4 
- select 4: 1,3,4 

After change select 2: 
- select 1: 2 (selected) 
- select 2: 4 
- select 3: 1,3 
- select 4: 1,3 
...etc 

、オプションは常に生成選択の数は

私のコードこれまでに示してオプションは空で始まり、最初のものから始めたい

+0

これは/タスクを実行するために、より(かなり広い)のように思える、それは*質問*が何であるか私には不明ですか?これまでのことを共有できますか?現在のソリューションの問題点を明示してください。 – Jeroen

+0

はい、申し訳ありません。だから私は現時点でjsFiddle(選択とオプションを生成)にあります。私が達成したいこと:例えば、最初の選択から数値を選択する場合、選択したものを他のすべての選択から削除したいのです...同じ番号を2回選択することはできません。それは明確ですか? – levipadre

+0

これらの 'html'ではなく、何かを試してみましたか? –

答えて

2

私はこれがあなたの必要条件だと思う。デフォルトでselectにオプションを選択した場合、他のドロップダウンでデフォルトの選択されたオプションを非表示にすることは困難です。だから空にすることをお勧めします。

CONTROLLER:

function LoginController($scope) { 
 
    $scope.arr = []; 
 
    $scope.obj={}; 
 
    $scope.items = [{ 
 
    name: 'Lorem ipsum dolor sit amet' 
 
    }, { 
 
    name: 'Consectetur adipiscing elit' 
 
    }, { 
 
    name: 'Fusce faucibus turpis eget' 
 
    }, { 
 
    name: 'Sed quis nisl sed ligula' 
 
    }, { 
 
    name: 'Nunc ultricies ipsum vitae' 
 
    }]; 
 

 
    $scope.changedPoll = function(num, i) { 
 
    $scope.obj[i] = num;$scope.arr=[] 
 
    angular.forEach($scope.obj, function(value,key){ 
 
    $scope.arr.push(parseInt($scope.obj[key])) 
 
    }); 
 
    } 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app ng-controller="LoginController"> 
 
    <div ng-model="items"> 
 
    <div ng-repeat="item in items"> 
 
     <select ng-model="selectedPollNum" ng-change="changedPoll(selectedPollNum, $index)"> 
 
     <option ng-repeat="option in items" ng-show='arr.indexOf($index + 1)<0'>{{ $index + 1}}</option> 
 
     </select> 
 
     <label>{{item.name}}</label> 
 
    </div> 
 
    </div> 
 
</div>

+0

すてきな解決策。 – Matheno

+0

それは良いです!ニース!名前の代わりに番号に変更できますか?この場合、1,2,3,4,5 – levipadre

+0

また、選択した後にオプションの1つを変更したい場合は、すでに消滅しているため、できません。 – levipadre

関連する問題