浏览器完成所有渲染操作后如何做某事?

时间:2016-11-29 20:24:23

标签: javascript angularjs forms

我有很大的形式。这个表单适用于真正的旧PC。此表单是某个瘦客户端的一部分。我使用AngularJS来实现SPA,并且选项卡上有这个表单。

当我打开表单时,我向后端发送一些请求并获取一些数据。之后,根据这些答案,AngularJS(通过ngIfngShow指令构建形式)。

生命周期是: 1)获取权限并获取数据 2)使用此数据

渲染一些字段(基于权限)

表格上有大约150个字段。好吧,当浏览器渲染大约80-100个组件时需要一段时间。那么这篇文章不是问题...

我的表格上有一些玻璃窗格。当表单未准备好时,必须在表单上方显示玻璃窗格。问题是我可以在某些操作上处理玻璃窗格。我这样做:

  1. 启用玻璃窗格
  2. 启动数据和权限api请求
  3. 获取数据和权限api请求答案
  4. 禁用玻璃窗格
  5. 根据权限呈现字段
  6. 问题是在禁用玻璃窗格后浏览器渲染字段。

    如何在浏览器完成渲染dom后禁用玻璃窗格?

    代码是:

    makePermissionsRequest().then(function (permissionsModel) {
      $scope.permissionsModel = permissionsModel;
    });
    

1 个答案:

答案 0 :(得分:0)

您可以尝试使用变异观察器来执行所需的代码

var observer = new MutationObserver(function(mutations) {
  mutations.forEach(function(mutation) {
    // disable the glass pane because the form was mutated
  });    
});

// configuration of the observer:
var config = { attributes: true, childList: true, characterData: true };

var target = ... // angular.element("yourform") would give you the form node

// pass in the target node, as well as the observer options
observer.observe(target, config);