我有一张表格,呈现ng-repeat
的行。在其中一个单元格中,有一个选择使用ng-options
呈现。在AngularJS模板呈现后执行代码
<tr ng-repeat="item in data.items" repeat-done>
<td >
...
<select class="selectpicker"
ng-model="person" ng-options="person.Surname for person in data.Persons track by person.Id">
<option value="">Introduce yourself...</option>
</select>
...
<td>
</tr>
当重复完成时,我需要将select转为bootstrap-select(一个漂亮的下拉列表)。因此,经过一点研究,我添加了以下指令:
app.directive('repeatDone', function() {
return function (scope, element, attrs) {
if (scope.$last) {
setTimeout(function() { $('.selectpicker').selectpicker(); }, 1);
};
};
});
它在tr处指定(参见上文)。
它的工作原理。但我有点担心是否有机会在慢速PC /平板电脑等上无法正常工作。据我所知,AngularJS具有异步性质。因此,在处理ng-repeat
的最后一个元素时,对于此元素仍可能有ng-options
(或者对于某些先前的元素也可能)不会呈现。还是我偏执狂?
没有可用[这里](https://github.com/joaoneto/angular-bootstrap-select),可以帮助一个指令包装。 – 2014-09-03 12:08:55