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