我有一張表格,呈現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