2016-08-22 58 views
0

我有一些类型的选项列表,如汽车,像这样的格式的总线:<option value="BUS" label="Bus">Bus</option>,当我想计算列表的长度时,我在Chrome中使用angular.element(element[0].options).length它返回正确的长度,但在Internet Explorer上它返回1AngularJS选项长度IE

+0

什么是'元素[0] .options.length'返回? – JimmyBoh

+0

它返回正确的数量27,但是当我使用angular.element(element [0] .options).length时,它返回1.当使用angular.element(element [0] .options)时,Firefox也返回正确的数量.length它似乎只是复制IE和Edge – Donatas

+0

如果您发现我的答案有帮助,请将其标记为已接受。同样,如果你想出了一个不同的修复方法,那么也要发布它,这样其他人可能会受益。 – JimmyBoh

回答

1

直接使用element[0].options.length,而不是将其包装在angular.element()中。如果你的列表是数据驱动的(我推荐),那么你也可以检查包含数据的数组的长度。

var list = document.getElementById('list'); 
 

 
console.log('list.options.length = ' + list.options.length);
<select id="list"> 
 
    <option>A</option> 
 
    <option>B</option> 
 
    <option>C</option> 
 
</select>

关于驱动列表中的数据,理想情况下,你应该有车辆的数组/运输/任何(可能与性或只是唯一的字符串复杂的对象)。一旦将该阵列展示给视图(通过范围或从controllerAs语法的this),然后您可以使用ngOptions生成选项列表。例如:

控制器JS:

$scope.items = [{ 
    id: 1, 
    label: 'aLabel', 
    subItem: { name: 'aSubItem' } 
}, { 
    id: 2, 
    label: 'bLabel', 
    subItem: { name: 'bSubItem' } 
}]; 

HTML模板:

<select ng-options="item as item.label for item in items track by item.id" ng-model="selected"></select>