呈现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();
}
}
});