Javascript 当Angular有';已完成';

Javascript 当Angular有';已完成';,javascript,angularjs,Javascript,Angularjs,我所说的“完成”是指所有数据绑定都已完成,Angular javascript已无可运行(直到用户和DOM交互) 我需要调用一个我已经拥有的javascript函数(fwiw,只需切换几个div的显示) 我尝试过的 我想尝试避免使用超时: 角度所需的时间是任意的,对我来说,要准确地使用时间间隔取决于太多的因素 我也尝试了app.run(function()…,但它运行得太早了 编辑(澄清) 将此场景想象为2个div 某些内容 及 {{someContent}} 在页面加载时(最初),用户将看到

我所说的“完成”是指所有数据绑定都已完成,Angular javascript已无可运行(直到用户和DOM交互)

我需要调用一个我已经拥有的javascript函数(fwiw,只需切换几个div的显示)

我尝试过的

我想尝试避免使用超时:

角度所需的时间是任意的,对我来说,要准确地使用时间间隔取决于太多的因素

我也尝试了
app.run(function()…
,但它运行得太早了

编辑(澄清)

将此场景想象为2个div

某些内容

{{someContent}}

在页面加载时(最初),用户将看到
{{someContent}}
,直到Angular“完成”。我想隐藏这个角度div,只显示静态div,然后在
{someContent}之后交换它们(即静态变为隐藏,角度变为可见)
已经呈现出来。我想做的事情确实很简单,
ng show
听起来可能是一个解决方案,但我不确定如何使用它。

如果
app.run(function(){…})
太早了,您不想使用
$timeout
也许您应该重构您想要调用的javascript函数,并以有角度的方式执行

如果只是切换div的可见性,请考虑使用<代码> ng/ng/ng隐藏< /c>。您也可以使用<代码> ng,如果有条件地删除或重建DOM树的一部分。这取决于您的函数的用途,也许自定义指令适合您的情况。

如果要在填充某些变量数据后显示这些数据,请执行以下示例:

<div ng-if='myVar'>
    <span>{{myVar}}</span>
</div>

{{myVar}}
根据编辑的问题更新:

<div ng-if='!myVar' class='static'>
    <span>STATIC CONTENT</span>
</div>
<div ng-if='myVar' class='angular'>
    <span>{{myVar}}</span>
</div>

静态内容
{{myVar}}
再次说明,
ng show/ng hide
可能会起作用,但不要忘记它们只会切换元素的可见性。
ng if
将在条件验证或未验证的情况下删除/重新创建元素。

if
app.run(function(){…})
太早了,您不想使用
$timeout
也许您应该重构您想要调用的javascript函数,并以有角度的方式执行

//using ng-if
<div ng-if="!someContent" class="static">SOME CONTENT</div>
<div ng-if="someContent" class="angular">{{ someContent }}</div>

//using ng-hide/show
<div ng-hide="someContent" class="static">SOME CONTENT</div>
<div ng-show="someContent" class="angular">{{ someContent }}</div>

如果只是切换div的可见性,请考虑使用<代码> ng/ng/ng隐藏< /c>。您也可以使用<代码> ng,如果有条件地删除或重建DOM树的一部分。这取决于您的函数的用途,也许自定义指令适合您的情况。

如果要在填充某些变量数据后显示这些数据,请执行以下示例:

<div ng-if='myVar'>
    <span>{{myVar}}</span>
</div>

{{myVar}}
根据编辑的问题更新:

<div ng-if='!myVar' class='static'>
    <span>STATIC CONTENT</span>
</div>
<div ng-if='myVar' class='angular'>
    <span>{{myVar}}</span>
</div>

静态内容
{{myVar}}
再次说明,
ng show/ng hide
可能会起作用,但不要忘记它们只会切换元素的可见性。
ng if
将在条件验证或未验证的情况下删除/重新创建元素。

//使用ng if
//using ng-if
<div ng-if="!someContent" class="static">SOME CONTENT</div>
<div ng-if="someContent" class="angular">{{ someContent }}</div>

//using ng-hide/show
<div ng-hide="someContent" class="static">SOME CONTENT</div>
<div ng-show="someContent" class="angular">{{ someContent }}</div>
一些内容 {{someContent}} //使用ng隐藏/显示 一些内容 {{someContent}}
//如果
一些内容
{{someContent}}
//使用ng隐藏/显示
一些内容
{{someContent}}

这闻起来像是反模式。为什么要切换那些div?在上下文中使用指令可能更有意义

无论如何,如果您认为这样做有充分的理由,可以使用
$applyAsync(yourFunction)
计划函数运行


$applyAsync
将对稍后执行的函数进行排队。如果在
$scope
初始化过程中放置该队列,则函数将在其余观察器执行后运行。

这闻起来像是一种反模式。为什么要切换这些div?使用指令可能会使在语境中重新理解

无论如何,如果您认为这样做有充分的理由,可以使用
$applyAsync(yourFunction)
计划函数运行


$applyAsync
将在以后对要执行的函数进行排队。如果在
$scope
初始化期间放置该队列,则函数将在其余观察程序执行后运行。

这实际上取决于您所指的角度完成。因为角度完成确实永远不会完成,所以它会持续运行运行其摘要周期。每个进程都有不同的规格,因此您不能简单地捕获所有事情何时完成(至少我不知道)。但我知道有两个用于ng repeat和ng bind的自定义指令,它们会发出事件,让您知道它已完成(您通过$scope.$on()捕获它们)-虽然不太理想……啊,我明白了,好吧。好吧,更具体地说,我的问题是,当angular正在做它所做的事情时,我在dom中暴露了以下内容:
{{variableName}
,然后(完成后),被替换为
variableValue
,例如。一旦这部分完成,我想能够显示Angular刚刚处理的是什么。我基本上在DOM中隐藏丑陋,直到Angular完成绑定。我不确定是否完全遵循,但听起来你应该使用ng show和ng hide。例如le真的很好,因为我觉得你不是在等待angular完成某件事,而是在等待其他动作,可能是承诺或ajax请求。你能设置简单的小提琴来展示你想要实现的目标吗?请参阅编辑,非常感谢你迄今为止的帮助。仍然不能100%确定你在“等待”什么对于angular完成,因为一切都很疯狂,但我认为ng if将是一种方式。检查@user3632710 answer这真的取决于你所说的angular完成的确切含义。因为angular真的从来没有完成过,它一直在运行它的摘要循环。每个过程都有不同