好的,我在 SO 上看到过类似的问题,但仍然不明白这个问题。
我有一个日期输入指令,使用 ngModelController。我有另一个指令,您可以将模型控制器传递给它,它会检查模型是否有错误,并为元素设置适当的类。
所以标记看起来像这样:
<form name="myForm">
<div class-validation="myForm.date">
<date-input ng-model="date" name="date"></date-input>
</div>
</form>
由于我们的表单中有date-input,并且它具有name属性和ng-model,因此 ngModelController 将添加到myForm的名称date下,这正是我们传递给class-validation指令的内容。
现在的问题是,如果我将 templateUrl 用于我的date-input指令,则class-validation指令会收到undefined。但是当我改用内联模板时,一切都按预期工作。
这是一个 Plunker,它准确地演示了这个问题。 http://plnkr.co/edit/Cygawxjp4WN9xRbTEXWU?p=preview
在 script.js 中注释掉第 41 行并取消注释第 42 行以查看问题。验证不起作用,如果您打开浏览器控制台,您会看到类验证将myForm.date 解析为未定义。
为什么会这样?我猜想从 url 需要模板是异步操作,但它不应该对开发人员产生影响。我浪费了好几个小时试图找出造成这种情况的原因。谢谢。