当前位置: 首页 > 面试题库 >

dom完成渲染后如何运行指令?

周奇文
2023-03-14
问题内容

我有一个看似简单的问题,没有明显的解决方案 (通过阅读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元素?


问题答案:

这取决于$(’site-header’)的构造方式。

您可以尝试使用$ timeout,延迟为0。就像是:

return function(scope, element, attrs) {
    $timeout(function(){
        $('.main').height( $('.site-header').height() -  $('.site-footer').height() );
    });        
}

解释其工作方式:一,二。

不要忘记$timeout在指令中添加:

.directive('sticky', function($timeout)


 类似资料:
  • 问题内容: 渲染模板后如何运行方法?我要设置和之后,我需要使用JQuery进行更改(例如,在模板内容的DOM中)。正在“之前”渲染工作(模板的DOM尚不可用)。谢谢。 问题答案: 创建在链接函数中运行代码的指令。构建模板后,将调用链接功能。 请参阅ng-click以获取想法。

  • 本文向大家介绍详解angular中如何监控dom渲染完毕,包括了详解angular中如何监控dom渲染完毕的使用技巧和注意事项,需要的朋友参考一下 刚刚看到群上一个人说,他们公司凡是用angular和jquery插件一起用的人,都被解雇了,没看到这句话之前我很惭愧的说我有这样用过,其实angular的生态系统那么完善,完全可以不用去操作任何的dom元素都可以满足你的提倡开发需求。 那么如果真的需要

  • 本文向大家介绍Angularjs通过指令监听ng-repeat渲染完成后执行脚本的方法,包括了Angularjs通过指令监听ng-repeat渲染完成后执行脚本的方法的使用技巧和注意事项,需要的朋友参考一下 前言 在用AngularJS期间, 经常用到ng-repeat, 业务中有时需要在异步获取数据并用ng-repeat遍历渲染完页面后执行某个操作,angular本身并没有提供监听ng-repe

  • 问题内容: 我正在一个有几个无法更改的脚本的项目中。这些脚本通过AJAX更新页面。更新完成后,我需要运行一些代码。 XMLHttpRequest完成时是否会触发任何事件?(或任何XMLHttpRequest状态更改?)。 不幸的是,我无法访问用于发出请求的特定XMLHttpRequest对象。 谢谢, 问题答案: 如果没有jQuery,则可以挂钩该方法以在XHR对象被编辑时为每个XHR对象的事件附

  • 问题内容: 我在DOM中有一个Angular模板。当我的控制器从服务中获取新数据时,它将更新$ scope中的模型,然后重新呈现模板。到目前为止一切都很好。 问题是,在模板重新渲染并且在DOM中(在本例中为jQuery插件)之后,我还需要做一些额外的工作。 似乎应该有一个事件要听,例如AfterRender,但我找不到任何此类事件。也许一条指令可以走,但它似乎还为时过早。 这是一个概述我的问题的j

  • 我在DOM中有一个Angular模板。当我的控制器从服务获取新数据时,它会更新$scope中的模型,并重新呈现模板。到目前为止一切都很好。 问题是,在模板被重新渲染并放入DOM(在本例中是一个jQuery插件)后,我还需要做一些额外的工作。 似乎应该有一个事件可以听,比如后浪汉,但我找不到任何这样的东西。也许指令是一条出路,但它似乎也太早了。 这是一个js小提琴概述我的问题:小提琴 - 角度问题