我遇到了问题,我想知道select元素何时完全填充并准备就绪,以便我可以在该select元素上执行第三方库函数。问题是我不知道角度何时完成其处理。
这是方案
我有这个select
元素
<select id="studentDropDown" ng-model="student" ng-options="stu.studentId as stu.studentName for stu in studentList" ></select>
并且在服务调用内部成功我分配值
$http({
method: 'GET',
url: urlVar,
})
.success(function (data, status, headers, config)
{
$scope.studentList= data.studentList;
//now what to do?
});
如果我在赋值后立即执行第三方方法,则会创建没有option
元素的下拉列表,但如果我将延迟时间设置为500毫秒或1秒,则会创建所有值的下拉列表。但我想要正确的解决方案,因此代码也适用于慢速机器/浏览器。
请建议更好的方法, 提前致谢
修改
我已在我的控制器中添加了此代码,但现在只使用1个option
元素填充下拉列表
$scope.$watch('studentList', function() {
$timeout(function() {
console.log("i am triggering");
$('#studentDropDown').thirdPratyFn('refresh');
});
});
修改
我的不好,在实施超时后,1 option
元素的问题是第三方方法。 DOM已完成并在此时填充
答案 0 :(得分:0)
我想到了两种解决方案:
在下一个事件循环中执行第三方插件代码。您可以使用 $ timeout 服务来执行您的方法。 e.g。
.success(function (data, status, headers, config)
{
$scope.studentList= data.studentList;
$timeout(fnToBeExecuted,0); //make sure to inject the $timeout service in your controller
});
编写一个可以完成工作的指令。这样就可以处理插件执行后要执行的任何数据绑定。