пары ключ-значение в НГ-параметры


мне нужно использовать ассоциативный массив как источник данных для моего select параметры с помощью AngularJS.

можно ли использовать такой массив?

{
    "key1": "val1",
    "key2": "val2",
    "key3": "val3",
    ...
}

и получить что-то вроде этого:

<select>
    <option value="key1">val1</option>
    <option value="key2">val2</option>
    <option value="key3">val3</option>
    ...
</select>

я прочитала docs, но я не могу понять, как этого добиться.

3 66

3 ответа:

использовать ng-option:

<select ng-model="blah" ng-options="key as value for (key , value) in data"></select>

или использовать ng-repeat:

<select>
    <option ng-repeat="(key, value) in data" value="{{key}}">{{value}}</option>
</select>

данные в контроллере:

$scope.data = {
    "key1": "val1",
    "key2": "val2",
    "key3": "val3",
    ...
};

в следующей статье обсуждается множество способов, которыми вы можете использовать ngOptions (на сегодняшний день самое ясное, самое подробное объяснение, которое я когда-либо видел): http://www.undefinednull.com/2014/08/11/a-brief-walk-through-of-the-ng-options-in-angularjs/

ответ Чэнь-Цу Линь на самом деле дает оба способа доступа к объектам. Просто хочу добавить еще несколько строк -

потому что ng-repeat директива повторяет блок HTML кода для каждого элемента в массиве, он может быть использован для создания параметров в выпадающем списке, но ng-options директива была сделана специально для заполнения выпадающего списка опциями и имеет как минимум одно важное преимущество:

выпадающие списки сделаны с ng-options позволяет выбрать значение объект, в то время как выпадающие списки сделаны из ng-repeat должна быть строка.

добавление примера для справки:

ng-repeat : http://www.w3schools.com/angular/tryit.asp?filename=try_ng_select_repeat_selected

ng-options: http://www.w3schools.com/angular/tryit.asp?filename=try_ng_select_object

для полной справки, голова на http://www.w3schools.com/angular/angular_select.asp