slopdel - select multiple

http://angularjs.org/

HTML

<script src="https://code.angularjs.org/1.6.6/angular.min.js"></script>
<div ng-controller="MyCtrl">
  <div class="row-sort" ng-repeat="(key1, value1) in selectList | orderBy : 'selected'">
    <select class="row-select" ng-model="value1.selected">
      <option ng-repeat="(key2, value2) in selectList" 
              value={{key2}}
              >{{key2}}</option>
    </select>
    <span class="row-label">{{value1.name}}</span>
  </div>
    
  <pre>{{selectList|json}}</pre>
</div>

JavaScript

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


app.controller('MyCtrl',MyCtrl);

function MyCtrl($scope) {
  $scope.selectList = [{
    idx: 0,
    selected: '0',
    name: 'Value1'
  }, {
    idx: 1,
    selected: '1',
    name: 'Value2'
  }, {
    idx: 2,
    selected: '2',
    name: 'Value3'
  }, {
  	idx: 3,
    selected: '3',
    name: 'Value4'
  }];
  
  $scope.$watch(function () {
        return $scope.selectList;
    },
   function (newVal, oldVal) {
      
     var selectedItemId;
     var selected;
      angular.forEach($scope.selectList, function(item){
          if(item.idx !== parseInt(item.selected)){
            selectedItemId = item.idx;
            selected = item.selected
            //
            }         
      });
      
      angular.forEach($scope.selectList, function(item){
          if(item.selected === selected){
            item.selected = ''+selectedItemId;
            item.idx = selectedItemId;
            selectedItemId = undefined;
            selected = undefined;
            }   
            
            if(item.idx !== parseInt(item.selected)){
              item.idx = parseInt(item.selected);
            }
      });
      
      //item.idx = parseInt(selectedItem.selected);
      
     
      
    console.log(newVal);
    console.log(selectedItemId, selected);
    },true);
  
}