填写了关于ng-option的通知

时间:2014-01-08 06:29:00

标签: javascript jquery angularjs

我遇到了问题,我想知道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已完成并在此时填充

1 个答案:

答案 0 :(得分:0)

我想到了两种解决方案:

  1. 在下一个事件循环中执行第三方插件代码。您可以使用 $ 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
      });
    
  2. 编写一个可以完成工作的指令。这样就可以处理插件执行后要执行的任何数据绑定。