0

Надеюсь, кто-то может помочь в решении этой проблемы.Скрыть выбранную опцию в другом списке, используя ngOptions в AngularJS

У меня есть 1 массив аэропортов, используемых в двух отдельных отдельных выпадающих списках.

<select data-ng-model="flightData.origin" data-ng-options="airport.code as airport.label for airport in flightData.airports" name="origin"></select> 

и

<select data-ng-model="flightData.destination" data-ng-options="airport.code as airport.label for airport in flightData.airports" name="destination"></select> 

Оба из этих списков, очевидно, имеют те же параметры. То, что я хотел бы сделать, это когда вы выбираете, например, "Sydney" в начале координат, чтобы удалить "Sydney" из выпадающего списка адресата.

Для справки, это пример того, как выглядят данные аэропорта.

this.airports = [{ 
    code: "TSV", 
    label: "Townsville", 
}, { 
    code: "PER", 
    label: "Perth", 
}, { 
    code: "BNE", 
    label: "Brisbane", 
}, { 
    code: "MEL", 
    label: "Melbourne", 
}, { 
    code: "KGI", 
    label: "Kalgoorlie", 
}, { 
    code: "SYD", 
    label: "Sydney", 
},{ 
    code: "LAX", 
    label: "Los Angeles", 
}, { 
    code: "JFK", 
    label: "New York", 
}, { 
    code: "DEL", 
    label: "New Dehli", 
}]; 

Я понимаю, что, скорее всего, нужны две отдельные массивы (1 для происхождения и 1 для назначений), просто не знаю, как подойти к нему.

Спасибо!

+0

Помните, что при его удалении вам придется добавить его обратно, если пользователь изменит первый выбор. Кроме того, помните, что вы вернете его в алфавитном порядке или в любом порядке, когда список был первоначально отправлен. Я просто сделал это с аэропортами :) – nweg

ответ

0

ng-change а также вам нужен два списка.

<select data-ng-model="flightData.airports_origin" ng-change="changeOrigin()" data-ng-options="airport.code as airport.label for airport in flightData.airports" name="origin"></select> 

<select data-ng-model="flightData.airports_destination" data-ng-options="airport.code as airport.label for airport in flightData.airports" name="origin"></select> 

В контроллере, впрыснуть filterFilter, а затем искать выбранный аэропорт в доступном целевом списке аэропортов и удалить его.

// in your controller 
$scope.airports_origin  = angular.copy(this.airport); 
$scope.airports_destination = angular.copy(this.airport); 
$scope.changeOrigin = function(){ 
    var selected_origin = flightData.origin; 
    var destination_airport = filterFilter(this.airports_destination,{'code':selected_origin.code})[0]; 
    $scope.airports_destination.splice($scope.airports_destination.indexOf(destination_airport),1); 

} 
Смежные вопросы