Рассмотрев документацию и многочисленные вопросы здесь, на SO, я не могу найти решение для моей проблемы. У меня есть раскрывающийся список, который заполняется данными из базы данных. Чтобы заполнить это, я использую ngOptions с помощью метода select as
.ngOptions: выберите выбранное значение ИЛИ выберите значение по умолчанию
<select ng-model="modelthing" ng-options="item.id as item.description for item in categories">
Теперь то, что я хочу, это вариант по умолчанию (который может быть изменен администратором, поэтому он не может быть зашиты в качестве <option>
), если значение не было выбрано ранее, и выбранное значение, когда есть один из тех.
$scope.categories = $http.get(thingurl)
.then(function (result) {
$scope.categories = result.data;
//$scope.modelthing= $scope.categories[1].id;
$scope.modelthing= 1;
});
Есть две проблемы с этим, прежде всего [1]
выбирает вторую запись в данных JSON, а не тот, который имеет 1
как ключ. И второе: Solved this with help from Icycool in their comment below.
Когда я держать открытие и закрытие населенное форму примерно половину времени я получаю значение по умолчанию, а другая половина я получаю реальное выбранное значение. Это, очевидно, потому, что ng-model="modelthing"
перезаписывается, когда я извлекаю данные из заполненной формы и код работает синхронно. Есть ли способ убедиться, что это работает асинхронно? Или мой подход просто неправильный?
Другие вещи, которые я пробовал до сих пор:
Я заметил, что, когда я использовал select as item in items
фразу в ngOptions, варианты в мой выбор есть value="number:3"
вместо простого числа. Using track by
in ngOptions вместо select as
исправил это, но было так неожиданно, что мои выбранные значения не совпадали с отображенными в раскрывающемся списке, потому что они равны 3
вместо number:3
.
Решение, которое делает работы, но чувствует себя очень Неугловые и немного грязный, чтобы проверить при инициализации формы, если modelthing
модели пуста, и если да, то установите его значение по умолчанию.
обновите сообщение своими данными json. – Aravind