angular:关于ng-repeat和ng-options

两者均可用于实现下拉列表,而且度娘上有不少关于二者的内容,此处再也不赘述,本文为了说明在最近的项目中遇到的相关问题,
能够写成以下格式php

ng-repeat
<select> <option value="x.id" ng-repeat="x in list" ng-bind="x.name"> </option> </select>
ng-options
<select ng-options="x.id as x.name for x in list" ng-model="listId"> </select>
区别:
  1. 如上所示,当在select中时ng-repeat须要写在option中,而ng-options不须要option,会自动生成。
  2. ng-options 必定要和ng-model 搭配,ng-model获取的是列表的value值。
  3. 注意!!
    1).ng-options的value值得类型是number,当list.id是string类型时没法循环
    2).ng-repeat的value值类型是string,当list.id是number类型时没法循环
    能够根据id类型不一样选择,这是在最近的项目中发现的问题,经过上述方法解决,若是有不一样看法,欢迎留言。

另:
附上在解决过程当中尝试的方法,可能重复,有问题仅作记录(如下简写,如下两种方法都是使用ng-repeat)html

【步骤】:列表list中id类型规定为number类型,首次实现页面下拉框时,使用的是ng-repeat,
【结果】:下拉列表显示为空白
【问题】:F12查看Elements,发现下拉列表中option以下显示django

<option value="? number:1 ?"></option>

【解决1】 在js中将id装换为string 类型
list.id = list.id+"";
【方法的问题】
1.只是写了一句话,可是须要的地方不少,致使重复....
2.改变了原类型spa

【解决2】 朋友的思路,在js中写一个方法将id装换为string 类型,并在页面上使用这个方法,具体以下:
.js:code

$scope.toString = function(){ list.id.toString(); }

.htmlxml

<option value="{{toString(x.id)}}" ng-repeat="x in list" ng-bind="x.name"></option>
相关文章
相关标签/搜索