Это бесконечный цикл. Операторы инициализации, условия и приращения являются необязательными, поэтому без каких-либо из них это всегда будет повторяться снова (если только разрыв не ударит или какая-либо другая конструкция не взаимодействует с ним).
Хотя я не уверен о Java, этот вопрос объясняет, как в .Net ваши пустые for
и while (true)
будут скомпилированы точно так же. Я не удивлюсь, если Java тоже.
В вашей третьей попытке вы действительно исправились.
<select ng-model="myselect" ng-options="o as o for o in options"></select>
См. рабочий пример здесь: http://plnkr.co/edit/xEERH2zDQ5mPXt9qCl6k?p=preview
Фокус в том, что AngularJS записывает ключи как числа от 0 до n в любом случае и переводит их обратно при обновлении модели.
В результате HTML будет выглядеть некорректно, но модель будет по-прежнему правильно установлена при выборе значения. (т. е. AngularJS переведет '0' обратно в 'var1')
Решение Epokk также работает, однако, если вы загружаете данные асинхронно, вы можете обнаружить, что это не всегда правильно обновлять. Использование ngOptions будет корректно обновляться при изменении области действия.
вы можете использовать что-то вроде
<select ng-model="myselect">
<option ng-repeat="o in options" ng-selected="{{o==myselect}}" value="{{o}}">
{{o}}
</option>
</select>
, используя ng-selected, вы предварительно выбираете опцию в случае, если myselect был предварительно заполнен.
В любом случае, я предпочитаю этот метод по ng-options, так как ng-options работает только с массивами. ng-repeat также работает с json-подобными объектами.
ng-options
также работает с объектными источниками данных. См. docs.angularjs.org/api/ng/directive/select
– Charlie Schliesser
28 August 2014 в 17:45
Вы можете использовать ng-repeat
с option
следующим образом:
<form>
<select ng-model="yourSelect"
ng-options="option as option for option in ['var1', 'var2', 'var3']"
ng-init="yourSelect='var1'"></select>
<input type="hidden" name="yourSelect" value="{{yourSelect}}" />
</form>
Когда вы отправляете свой form
, вы можете получить значение скрытого ввода.
Если вы настроите свой выбор следующим образом:
<select ng-model="myselect" ng-options="b for b in options track by b"></select>
, вы получите:
<option value="var1">var1</option>
<option value="var2">var2</option>
<option value="var3">var3</option>
рабочий скрипт: http://jsfiddle.net/ x8kCZ / 15 /
<select ng-model="option" ng-options="o for o in options">
$ scope.option после изменения будет равно «var1», даже если вы видите значение = «0» в сгенерированном html
value
в своемselect
. – EpokK 13 August 2013 в 07:41