我有一个看似简单的问题,但没有明显的解决方案(通过阅读Angular JS文档)。
我得到了一个Angular JS指令,它根据其他DOM元素的高度进行一些计算,以定义DOM中容器的高度。
与此类似的事情正在指令中发生:
return function(scope, element, attrs) {
$('.main').height( $('.site-header').height() - $('.site-footer').height() );
}
问题是,当指令运行时,找不到$('site-header')
,返回一个空数组,而不是我需要的jQuery包装的DOM元素。
是否有一个回调可以在我的指令中使用,它只在DOM加载之后运行,并且我可以通过普通的jQuery选择器风格的查询访问其他DOM元素?
发布于 2012-09-03 14:41:58
发布于 2014-05-07 05:55:14
我是这样做的:
app.directive('example', function() {
return function(scope, element, attrs) {
angular.element(document).ready(function() {
//MANIPULATE THE DOM
});
};
});
发布于 2014-01-07 13:54:04
也许作者不再需要我的答案了。尽管如此,为了完整起见,我觉得其他用户可能会发现它很有用。最好也是最简单的解决方案是在返回的函数体中使用$(window).load()
。(或者,您可以使用document.ready
。这真的取决于你是否需要所有的图像)。
在我看来,使用$timeout
是一个非常弱的选择,在某些情况下可能会失败。
下面是我使用的完整代码:
.directive('directiveExample', function(){
return {
restrict: 'A',
link: function($scope, $elem, attrs){
$(window).load(function() {
//...JS here...
});
}
}
});
https://stackoverflow.com/questions/12240639
复制相似问题