2014-07-16 23 views
1

我需要引导日期选择器连接到将与AngularJS生成我的投入的领域之一。等待的角度来完成更新DOM

执行以下操作不起作用,因为该元素尚不存在:

$(function() { 
    $(':input[name=dispense_date]').datepicker(); 
}); 

相反,我必须做到:

$(function() { 
    setInterval(function() { 
     $(':input[name=dispense_date]').datepicker(); 
    }, 200); 
}); 

后者版本的作品,但效率低,不正是“正确“的方式来做到这一点。角度控制器/模块是否有一种方法在一切完成后运行回调?

我所需要的jQuery代码的$ http.get()调用之后运行,但简单地增加它的.success()调用内不会做的伎俩,因为$所适用还没有跑呢。

+3

不要重新发明车轮。 http://angular-ui.github.io/bootstrap/ – charlietfl

+0

是的,但我不喜欢他们的日期选择器的外观。 – TheOne

回答

3

使用$超时:

$timeout(function() { 
    $(':input[name=dispense_date]').datepicker(); 
}); 

角将确保超时功能的编译/链接阶段之后,甚至呈现阶段后执行。

+0

pixelbits,$ http.success()运行后是否有$ timeout的版本? – TheOne

+0

@ramin - 不,我很确定没有。这就是说,$超时返回一个承诺,所以你可以轻松地链接$超时后运行$ http调用(这也返回一个承诺) – pixelbits

+1

你可以把$超时调用成功处理程序 - 它可能会触发另一个摘要,但这是棱角分明的核心。您可能不需要两个链接的承诺 - 您将在成功处理程序中操作模型,然后您可能需要在成功处理程序中调用$ timeout以重新初始化datepicker – pixelbits