呈现AngularJS模板后执行代码

呈现AngularJS模板后执行代码,angularjs,Angularjs,我有一个用ng repeat呈现行的表。在其中一个单元格中,有一个select,该select使用ng options呈现 <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

我有一个用
ng repeat
呈现行的表。在其中一个单元格中,有一个select,该select使用
ng options
呈现

<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>
在tr中规定(见上文)


它起作用了。但我有点担心它是否有可能在速度较慢的PC/平板电脑/等设备上无法工作。据我所知,AngularJS具有异步特性。因此,在处理
ng repeat
的最后一个元素时,仍有可能未呈现此元素(或可能是前一个元素)的
ng options
。还是我偏执?

您不应该使用超时同步指令。可能会出现很多问题

您可以使用“优先级”选项在指令将要使用时进行排序。指令按子代顺序执行

ngRepeat的优先级为1000() 选择的优先级为0()

如果您以负优先级声明指令,它将在ng选项后执行

app.directive('repeatDone', function () {
    return {
        priority: -5,
        link: function (scope, element, attrs) {
           $('.selectpicker').selectpicker(); 
        }
    }
});
根据文件:

优先权

当在单个DOM元素上定义了多个指令时, 有时有必要指定指令的顺序 都适用。优先级用于在指令发出之前对指令进行排序 编译函数被调用。优先级定义为一个数字。 首先编译具有更高数字优先级的指令。 前链接功能也按优先级顺序运行,但后链接功能除外 函数按相反的顺序运行。指令的顺序与 相同的优先级未定义。默认优先级为0


$compile

有一个可用的指令包装器可能会有所帮助。为什么它不起作用?它是在ng选项之前执行的吗?
app.directive('repeatDone', function () {
    return {
        priority: -5,
        link: function (scope, element, attrs) {
           $('.selectpicker').selectpicker(); 
        }
    }
});