源JSON数据是:
[ {"name":"Alabama","code":"AL"},{"name":"Alaska","code":"AK"},{"name":"American Samoa","code":"AS"},... ]
我试试
ng-options="i.code as i.name for i in regions"
但我得到:
<option value="?" selected="selected"></option> <option value="0">Alabama</option> <option value="1">Alaska</option> <option value="2">American Samoa</option>
而我期待得到:
<option value="AL">Alabama</option> <option value="AK">Alaska</option> <option value="AS">American Samoa</option>
顺便说一下,如果我将$ scope.regions设置为静态JSON而不是AJAX请求的结果,空项目消失。
你第一次尝试应该工作,但HTML不是我们所期望的。我添加了一个选项来处理初始“无项目选择”案例:
<select ng-options="region.code as region.name for region in regions" ng-model="region"> <option style="display:none" value="">select a region</option> </select> <br>selected: {{region}}
上面生成这个HTML:
<select ng-options="..." ng-model="region" class="..."> <option style="display:none" value class>select a region</option> <option value="0">Alabama</option> <option value="1">Alaska</option> <option value="2">American Samoa</option> </select>
即使Angular对该值使用数字整数,模型(即$ scope.region)也将根据需要设置为AL,AK或AS。 (当从列表中选择一个选项时,Angular使用该数值来查找正确的数组条目。)
当第一次学习Angular如何实现其“select”指令时,这可能会令人困惑。