我在我的angular控制器中有一个函数,我希望这个函数在文档就绪时运行,但我注意到angular在创建dom时运行它。
function myController($scope)
{
$scope.init = function()
{
// I'd like to run this on document ready
}
$scope.init(); // doesn't work, loads my init before the page has completely loaded
}
有人知道我该怎么做吗?
Angular有几个开始执行函数的时间点。如果您正在寻找类似jQuery的
$(document).ready();
你可能会发现这个类比在angular中非常有用:
$scope.$watch('$viewContentLoaded', function(){
//do something
});
当您想要操作DOM元素时,这个选项非常有用。它只在所有te元素加载后才开始执行。
UPD:当你想改变css属性时,上面所说的是有效的。然而,当您想测量元素属性(如宽度、高度等)时,有时它就不起作用了。在这种情况下,你可能想试试这个:
$scope.$watch('$viewContentLoaded',
function() {
$timeout(function() {
//do something
},0);
});