У меня есть выбор с ngOptions на основе массива. Этот массив может измениться.Сохранять выбранную опцию, когда новый массив параметров не содержит значения
Если новое значение массива не содержит выбранное значение параметра, значение параметра устанавливается в undefined с помощью selectController. Есть ли способ предотвратить это ?
Plunker: https://plnkr.co/edit/kao3h5ivHXlP1Wrdx1Ib?p=preview
Сценарий:
- выберите синий/красный или зеленый цвет
- нажми на Уменьшенный только есть черные и белые варианты
- Смотрите, что модель значение остается пустым
Wanted поведение: что стоимость модели остается на синий/красный или зеленый
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<script src="//code.angularjs.org/snapshot/angular.min.js"></script>
</head>
<body ng-app="selectExample">
<script>
angular.module('selectExample', [])
.controller('ExampleController', ['$scope', function($scope) {
$scope.colorsFull = [
{id:"bk", name:'black'},
{id:"w", name:'white'},
{id:"r", name:'red'},
{id:"be", name:'blue'},
{id:"y", name:'yellow'}
];
$scope.colors = $scope.colorsFull;
$scope.selectedColor =$scope.colorsFull[0];
$scope.colorsReduced = [
{id:"bk", name:'black2'},
{id:"w", name:'white2'}];
}]);
</script>
<div ng-controller="ExampleController">
<button ng-click="colors=colorsReduced">Reduced</button>
<button ng-click="colors=colorsFull">Full</button>
<br/>
Colors : {{colors}}
<hr/>
<select ng-model="selectedColor" ng-options="color.name for color in colors track by color.id">
</select>
selectedColor:{{selectedColor}}
</div>
</body>
</html>
Ну, я ставлю, что объект установлен на неопределенный, поэтому ему нечего отслеживать. Когда вы нажмете уменьшенные цвета, я бы вызвал функцию, а затем установил цвета в пустой цвет какого-то типа, я бы не обработал код html, я бы обработал его в контроллере ... можете ли вы иметь цвет, blank " – Maccurt
Держу пари, что он пытается найти новый цвет по идентификатору, и этот идентификатор удален, поэтому он находит неопределенный ... – Maccurt