【发布时间】:2015-06-09 13:04:23
【问题描述】:
“完成”是指所有数据绑定都已完成,Angular javascript 没有任何东西可以运行(直到用户与 DOM 交互)。
我需要调用一个我已经拥有的 javascript 函数(fwiw,它只是简单地切换几个 div 的显示)。
我的尝试
我想尽量避免使用超时:
http://blog.brunoscopelliti.com/run-a-directive-after-the-dom-has-finished-rendering/
角度需要多长时间是任意的,并且对于我来说准确使用时间间隔取决于太多。
我也试过app.run(function()....,但运行得太早了!?
编辑(澄清)
把这个场景想象成 2 个 div。
<div class="static">SOME CONTENT</div>
和
<div class="angular">{{ someContent }}</div>
在页面加载时(最初),用户将看到{{ someContent }},直到 Angular “完成”。我想隐藏这个角度 div,只显示静态 div,然后交换它们(即静态变为隐藏,角度变为可见),一旦 {{ someContent }} 被渲染出来。我正在尝试做的事情肯定很简单,ng-show 听起来可能是一个解决方案 - 但我不确定如何使用它。
【问题讨论】:
-
这真的取决于你所说的角度精加工到底是什么意思。因为 Angular 真的永远不会结束,所以它一直在运行它的摘要循环。每个过程都有不同的规格,所以你不能简单地捕捉到一切都完成的时候(至少我不知道)。但我知道 ng-repeat 和 ng-bind 有几个自定义指令会发出事件让你知道它已经完成(你通过 $scope.$on() 捕获它们) - 虽然并不理想......
-
啊,我明白了,好的。好吧,更具体地说,我的问题是,虽然 angular 正在做它所做的事情,但我在 dom 中暴露了以下内容:
{{ variableName }}然后(完成后)将被换成variableValue,例如。一旦 这部分 完成,我希望能够展示 Angular 刚刚处理的内容。我基本上是在 DOM 中隐藏丑陋,直到 Angular 完成绑定。 -
我不确定我是否完全遵循,但听起来你应该使用 ng-show 和 ng-hide。一些例子会非常好,因为在我看来,你不是在等待 angular 完成某事,而是在等待其他一些动作,可能是 promise 或 ajax 请求。你能设置简单的小提琴来展示你想要实现的目标吗?
-
请查看编辑,非常感谢您迄今为止的帮助。
-
仍然不是 100% 确定你在“等待”什么来等待 angular 完成,因为一切都很疯狂,但我认为 ng-if 将是正确的选择。检查@user3632710 答案
标签: javascript angularjs