, , , .
ng-repeat, 2D.
: -
$scope.selects = [[{name:'level11', id:1}, {name:'level12', id:2}, {name:'level13', id:3}],
[{name:'level21', id:1}, {name:'level22', id:2}, {name:'level23', id:3}],
[{name:'level31', id:1}, {name:'level32', id:2}, {name:'level33', id:3}],
[{name:'level41', id:1}, {name:'level42', id:2}, {name:'level43', id:3}],
[{name:'level51', id:1}, {name:'level52', id:2}, {name:'level53', id:3}]];
: -
$scope.selected = Array.apply(null, { length: $scope.selects.length }).map(Object);
changehandler, , .
$scope.handleChange = function(index) {
$scope.selected = $scope.selected.map(function(itm, idx){
return (idx > index) ? {} : itm;
});
var selected = $scope.selected[index];
}
, , : -
<select ng-repeat="select in selects" ng-class="selectLevel{{$index}}"
ng-change='handleChange($index)' <!-- Handler for Change event pass index of even model -->
ng-model='selected[$index].value' <!-- Yes this is the model -->
ng-show='!$index || selected[$index-1].value' <!-- Show only if its previous model has a value -->
ng-options='obj.name for obj in select track by obj.id'>
</select>