ng-options не вытягиваются из массива javascript [duplicate]

Это бесконечный цикл. Операторы инициализации, условия и приращения являются необязательными, поэтому без каких-либо из них это всегда будет повторяться снова (если только разрыв не ударит или какая-либо другая конструкция не взаимодействует с ним).

Хотя я не уверен о Java, этот вопрос объясняет, как в .Net ваши пустые for и while (true) будут скомпилированы точно так же. Я не удивлюсь, если Java тоже.

175
задан Victor Marchuk 11 March 2016 в 11:01
поделиться

5 ответов

В вашей третьей попытке вы действительно исправились.

 <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 будет корректно обновляться при изменении области действия.

282
ответ дан James Davies 19 August 2018 в 08:53
поделиться
  • 1
    Вы не в тему. Вы не поняли инструкции. Он хочет value в своем select. – EpokK 13 August 2013 в 07:41
  • 2
    Я понял инструкции, однако вполне вероятно, что он намерен привязать «ценность» к модели и не понимает, что происходит из-за того, как AngularJs передает тег. – James Davies 13 August 2013 в 07:42
  • 3
    Ваш пример не работает. Посмотрите DOM. – EpokK 13 August 2013 в 07:44
  • 4
    Он работает, если вы получаете значение select с угловым, но в моем случае (т.е. классическая форма отправки) значения будут равны 0,1,2,3, а не var1, var2, var3 – Dragu 13 August 2013 в 07:45
  • 5
    Это только я, или это самый разоблаченный и неясный синтаксис? – fool4jesus 11 November 2014 в 04:09

вы можете использовать что-то вроде

<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-подобными объектами.

19
ответ дан Brad Larson 19 August 2018 в 08:53
поделиться
  • 1
    ng-options также работает с объектными источниками данных. См. docs.angularjs.org/api/ng/directive/select – Charlie Schliesser 28 August 2014 в 17:45
  • 2
    Несмотря на то, что другие предложили обходные пути, это решение на сегодняшний день является самым элегантным и близким к старым html-стилям, работает как с привязкой угловой модели, так и с представлением формы. Благодаря! – Fadi Chamieh 19 November 2014 в 18:31
  • 3
    ng-selected не требует рулей, поскольку это угловая директива. Отличное решение. – Kasey Speakman 9 December 2014 в 22:03

Вы можете использовать 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, вы можете получить значение скрытого ввода.


DEMO

ng-selected ng-repeat

33
ответ дан EpokK 19 August 2018 в 08:53
поделиться
  • 1
    Если вы отклонили мой ответ, проверьте мое новое решение. – EpokK 13 August 2013 в 10:25

Если вы настроите свой выбор следующим образом:

<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 /

20
ответ дан Ida N 19 August 2018 в 08:53
поделиться
  • 1
    Это решение было единственным, который работал для меня для выбора начального значения в массиве строк. – Ena 10 August 2015 в 12:43
  • 2
    да, это должен быть ответ, трек делает волшебство для меня. – Gurnard 19 April 2016 в 14:04
  • 3
    я ожидал меньше всего после следующих решений, но это был простой выход – sac Dahal 6 July 2016 в 13:13
<select ng-model="option" ng-options="o for o in options">

$ scope.option после изменения будет равно «var1», даже если вы видите значение = «0» в сгенерированном html

plunker

10
ответ дан Toolkit 19 August 2018 в 08:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: