77

我需要使用关联数组作为我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>

我阅读了文档,但我不明白如何实现这一点。

4

3 回答 3

168

使用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",
    ...
};
于 2014-02-12T17:04:59.097 回答
21

以下文章讨论了您可以使用 ngOptions 的各种方式(迄今为止我见过的最清晰、最彻底的解释):http ://www.undefinednull.com/2014/08/11/a-brief-walk -通过-of-the-ng-options-in-angularjs/

于 2014-10-02T12:43:18.337 回答
3

Chen-Tsu Lin 的回答实际上给出了访问对象的两种方式。只想再添加几行 -

因为该ng-repeat指令为数组中的每个项目重复一段 HTML 代码,所以它可用于在下拉列表中创建选项,但该ng-options指令专门用于使用选项填充下拉列表,并且至少具有一个重要优点:

下拉ng-options列表允许选择的值是一个对象,而下拉列表ng-repeat必须是一个字符串。

添加示例以供参考:

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

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

如需完整参考,请访问 http://www.w3schools.com/angular/angular_select.asp

于 2016-12-09T06:41:11.047 回答