带有ng-options的AngularJS DropDown

时间:2013-04-10 01:54:45

标签: javascript angularjs

假设我有一个像这样的控制器:

function MockController($scope) {
$scope.objs = [{"a": "true"},{"b": "false"}];
$scope.Value = "";
}

在html视图中,我有类似的内容:

  <select class="input-block-level" ng-model="Value" 
  ng-options="(obj.key, obj.value) for obj in objs" required>

但是,无论我如何尝试,角度似乎都不像元组符号。我试过没有父母,没有骰子。是否有一种通用的方法来处理ng-repeat中的哈希表/字典?也就是说,假设您不知道密钥的名称,并且它们的密钥本身应该像这样使用:

<option value={{obj.key}}>{{obj.value}}</option>

3 个答案:

答案 0 :(得分:5)

我认为不可能在ng-options中引用未知密钥。

我可能会尝试在此过程中的某处编写数据包装器,将其转换为类似的内容:

[{"key": "a", "value": "true"},
 {"key": "b", "value": "false"}]

(问题非常有趣,我实际上已经编写了一个:http://jsfiddle.net/RCU8M/ - 但是在没有ECMAScript5支持的浏览器中这不起作用,所以你可能想通过使用更优雅的解决方案来修复它,比如get keys of json-object in JavaScript。)

答案 1 :(得分:2)

不是

<select ... ng-options="(key, value) in objs" ...>

答案 2 :(得分:1)

这应该像这样使用:

<select>
<option ng-repeat="objin objs" value="{{obj.key}}">{{obj.value}}</option>
</select>