Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angular何时向DOM添加指令模板?_Javascript_Angularjs - Fatal编程技术网

Javascript Angular何时向DOM添加指令模板?

Javascript Angular何时向DOM添加指令模板?,javascript,angularjs,Javascript,Angularjs,我需要使用一个Javascript库(scrollReveal),它假设完整的DOM已经准备好了。我目前正在使用AngularJS 问题是,我不知道什么时候初始化ScrollView window.sr = new scrollReveal(); 如果我在一个指令的link函数中这样做,它可能不会应用于另一个指令的模板,因为另一个模板可能还没有添加到DOM中 所以我有两个问题: 1) 指令模板何时添加到DOM?如果我使用template和templateUrl,会有区别吗 2) 如何添加假定为

我需要使用一个Javascript库(scrollReveal),它假设完整的DOM已经准备好了。我目前正在使用AngularJS

问题是,我不知道什么时候初始化ScrollView

window.sr = new scrollReveal();
如果我在一个指令的link函数中这样做,它可能不会应用于另一个指令的模板,因为另一个模板可能还没有添加到DOM中

所以我有两个问题:

1) 指令模板何时添加到DOM?如果我使用template和templateUrl,会有区别吗

2) 如何添加假定为完整DOM的其他代码

谢谢。

1)指令模板何时添加到DOM?如果我使用template和templateUrl,会有区别吗?

您可以使用自己喜欢的内容。但是,在单独的文件中编写html是一种更简洁的解决方案。我个人更喜欢
templateUrl
,因为我认为将html代码放入字符串不是一个好的做法。但在执行代码时没有区别

2)如何添加假定完整DOM的附加代码?

$timeout是window.SetTimeStart的Angular包装。超时将从执行队列中删除该函数,并且只有在JavaScript完成当前执行队列后才会调用该函数。这就是为什么在执行之前会更新您的模型

以下是一个例子:

$timeout(function(){
   // template should be visible now
[,optional delay]);

$timeout将在摘要循环完成之前运行。

包含ng repeat的模板将有非常不同的处理方式。..1)这并没有回答我的问题:何时将指令模板添加到DOM?当然是在link函数之前的某个时候,但是我还没有找到更好的方法来解释它。例如,如果有两个指令和两个模板,我不知道先添加哪个模板。2) 使用$timeout似乎是一种攻击:你是说只需等待几秒钟,然后希望DOM在那之前已完全加载?$timeout不是等待“一段时间”以希望它已完全加载。Angularjs在调用$digest后呈现模板,这是超时代码的第一个调用。当您使用$timeout而没有延迟时,您是在javascript队列末尾“排队”该代码。这就是为什么您可以确定DOM已经更新了