Javascript AngularJS:页面加载中不存在的DOM元素上的指令不';不编译

Javascript AngularJS:页面加载中不存在的DOM元素上的指令不';不编译,javascript,angularjs,angularjs-directive,angularjs-ng-repeat,Javascript,Angularjs,Angularjs Directive,Angularjs Ng Repeat,我根据SO的一个示例创建了一个新的指令ngModelOnblur,它使ng模型只侦听输入元素上的模糊事件。当元素出现在页面加载中时,该指令工作正常。我希望在不同页面上的一个输入元素上使用相同的指令,其中该元素不在页面加载中,而是在AJAX调用完成时添加 模板如下所示: <table> <tr ng-repeat="person in persons"> <td><input type="text" ng-model="person.city"

我根据SO的一个示例创建了一个新的指令ngModelOnblur,它使ng模型只侦听输入元素上的模糊事件。当元素出现在页面加载中时,该指令工作正常。我希望在不同页面上的一个输入元素上使用相同的指令,其中该元素不在页面加载中,而是在AJAX调用完成时添加

模板如下所示:

<table>
  <tr ng-repeat="person in persons">
    <td><input type="text" ng-model="person.city" ng-model-onblur ng-change="validateCity(person.city)" /></td>
  </tr>
</table>
我尝试在link函数中使用$timeout和scope.$evalAsync,但似乎没有任何东西触发指令编译


任何帮助都将不胜感激

是否使用
ng视图
加载模板? 是否正在调用链接函数

如果您是通过其他方式加载模板,则可能需要手动加载html

var html = $(someDomNode).html();
$compile(html)(scope);

没关系。我想我可能犯了一个愚蠢的错误。我在单独的模块中添加了新指令,但没有在原始模块中添加依赖项。我试试看它是否管用。 抱歉给您带来困惑,谢谢@charlietfl和@agreco。我将再次询问,在添加依赖项之后,它是否不起作用

编辑


原来这就是问题所在。在AJAX调用完成后、初始加载期间以及所有不同的情况下,当元素可见时,该指令才起作用。谢谢你的帮助,很抱歉给你带来困惑。如果angular能对这个问题给出更多的解释,那会很有帮助。

您是如何注入新的html的?您可能需要编译itpersons,因为它最初为null,但在AJAX调用完成后添加。该注释没有意义。如何添加代码?我的意思是,由于persons数组为空,元素在页面加载时被隐藏。在plunker中创建一个演示,您的注释中缺少详细信息没有帮助。我没有使用ng view。persons最初为null,但在AJAX调用完成后添加。链接函数根本没有被调用。
var html = $(someDomNode).html();
$compile(html)(scope);