在Angular.Js完成加载内容后加载JavaScript

时间:2013-12-26 17:46:40

标签: javascript angularjs sigma.js

我需要在Angular完成将所有内容加载到页面后加载脚本的一部分。

尝试了几个指令,超时,evalAsync,但是,在所有内容都启动之前,仍然会加载脚本。

有没有人知道避免这种情况的简单方法?

(问题是我正在使用Sigma.Js,它应该在页面加载后加载图形可视化。否则它将它加载到0像素高的div中,因此仅在我调整窗口大小或打开时显示Chrome中的控制台:http://www.knownodes.com/graph/aa1a2a78-b129-436c-8683-b4dd630f0566

1 个答案:

答案 0 :(得分:2)

在同步的情况下这很简单...只需从根范围观察器执行setTimeout(0)以在摘要周期之后运行(或使用私有和未记录的$$ postDigest注册)。

问题是真正的应用程序,它听起来像你的应用程序,至少有一定程度的异步性。我可以想到两种主要类型 - 加载模板和获取数据。你想要的是在所有挂起的Ajax调用完成并完成摘要周期后运行你的代码。

我知道一个简单的方法吗?不。但是你可以添加一个$ http拦截器来计算有多少挂起的Ajax调用。当它变为0时,您知道所有数据都已恢复。请参阅此处的拦截器部分:http://docs.angularjs.org/api/ng.$http

这假设您使用$ http或$ resource(间接使用$ http)。至于模板,假设您没有通过提前将其编译为JS来预加载模板缓存,我不知道提取模板是否使用相同的$ http接口,因此是可以拦截的。希望它能做到。