Angular Select с асинхронностью в директиве

Как бы я ни старался, я не могу получить угловой выбор с полностью работающей асинхронностью. Я могу заставить его в основном работать, но не все.

представьте, что контроллер выглядит так:

 $scope.stuff = {};
 $scope.stuff.blah = "SOME_KEY";
 External.list().then( function (data ) {
   $scope.stuff.sourceSystems =data; 
 });

то это хорошо отображает значения

 <select ng-model="stuff.blah">
 <option ng-repeat="(key, value) in stuff.sourceSystems | orderBy" value="{{key}}">{{key}}</option>
 </select>

но по какой-то причине в начале есть дополнительный пустой выбор:

<select ng-model="stuff.blah" ng-options="key for (key, value) in stuff.sourceSystems | orderBy"></select>

однако ни в том, ни в другом случае мое существующее значение, которое я установил в SOME_KEY, не выбрано. в первом случае выбирается первое значение в списке, во втором случае выбирается пустое значение. В обоих случаях основное связанное значение равно SOME_KEY. ОДНАКО - как только я действительно меняю выбранное значение, опуская его вниз - связанное значение (бла) - правильно изменяется.

Это в директиве с bindToController, установленным в true.

Что я делаю не так?


person Darren Oakey    schedule 26.05.2016    source источник
comment
это то, что я делаю во втором примере - на самом деле - я только что нашел обходной путь - если я использую ng-options и в обработчике обещаний привязываюсь к полному объекту - т.е. $scope.stuff.blah = data[SOME_KEY] это работает, но кажется немного взломать :(   -  person Darren Oakey    schedule 26.05.2016
comment
вы уверены, что ответ в data не имеет пустого ключа? Если вы можете опубликовать свой ответ из списка, нам будет легче помочь отладить это.   -  person Shannon Hochkins    schedule 26.05.2016


Ответы (1)


$scope.stuff.blah ‹- имеет строковый ключ

, в ng-repeat повторяющееся значение является объектом (включая угловой хэш-ключ)

try this, and read ng-options

 <select ng-model="stuff.blah" ng-options="system.key as system.key for system in stuff.sourceSystems | orderBy">
 </select>
person Dongkwon Lee    schedule 26.05.2016
comment
пробовал - не получилось - в списке ничего нет. Примечание. SourceSystems раздражает тем, что ключ не существует нигде в данных - это буквально хэш-таблица, где ключевой элемент существует только в ключе таблицы, а не в любом из элементов таблицы. - person Darren Oakey; 26.05.2016