ng-options中的键值对

dav*_*ooh 70 javascript select angularjs ng-options

我需要使用关联数组作为select使用AngularJS的选项的数据源.

是否可以使用这样的数组?

{
    "key1": "val1",
    "key2": "val2",
    "key3": "val3",
    ...
}
Run Code Online (Sandbox Code Playgroud)

得到这样的东西:

<select>
    <option value="key1">val1</option>
    <option value="key2">val2</option>
    <option value="key3">val3</option>
    ...
</select>
Run Code Online (Sandbox Code Playgroud)

我阅读了文档,但我无法理解如何实现这一目标.

Che*_*Lin 155

用途ng-option:

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

或使用ng-repeat:

<select>
    <option ng-repeat="(key, value) in data" value="{{key}}">{{value}}</option>
</select>
Run Code Online (Sandbox Code Playgroud)

控制器中的数据:

$scope.data = {
    "key1": "val1",
    "key2": "val2",
    "key3": "val3",
    ...
};
Run Code Online (Sandbox Code Playgroud)

  • 我强烈建议避免使用ng-repeat方法,因为它为每个键/值对添加了2个新手表.所以基本上如果您的选择包含50个项目,您只需创建100个新观察者.让人惊讶. (30认同)
  • 如果您需要使用`ng-repeat`并且您的键/值不会改变,我认为您可以通过使用新的[一次性绑定](https://docs.angularjs)避免使用@MarkusHay提到的2个新手表.org/guide/expression#one-time-binding)语法:数据中的"<option ng-repeat ="(键,值)"value ="{{:: key}}"> {{:: value}} </选项>` (9认同)
  • 谢谢,比`ngOption`的官方文档清楚得多。 (2认同)
  • 非常好,但无法使用'ng-options'设置默认选定项目 (2认同)

Mar*_*Hay 19

下面的文章讨论了使用ngOptions的各种方法(到目前为止,我见过的最清晰,最全面的解释):http://www.undefinednull.com/2014/08/11/a-brief-walk -通过的最-NG选项功能于angularjs /

  • 伟大的文章!推荐阅读,thx为链接。 (2认同)
  • 谢谢,不得不说,链接是迄今为止的最佳链接。:-) (2认同)