Использование templateUrl нарушает мой код, но вместо этого работает встроенный шаблон. Зачем?
Хорошо, я видел похожие вопросы по SO, но до сих пор не понимаю эту проблему.
У меня есть директива для ввода даты, используя ngModelController. У меня есть другая директива, в которую вы можете передать контроллер модели, и она проверяет, есть ли у модели ошибки, и устанавливает соответствующие классы для элемента.
Итак, разметка выглядит так:
<form name="myForm">
<div class-validation="myForm.date">
<date-input ng-model="date" name="date"></date-input>
</div>
</form>
Так как у нас есть ввод даты внутри нашей формы, и он имеет атрибут name и ng-model, ngModelController будет добавлен в myForm под именем name, что именно то, что мы передаем в директиву проверки класса.
Теперь проблема в том, что если я использую templateUrl для моей директивы ввода даты, директива проверки класса получает неопределенное значение. Но когда я использую встроенный шаблон вместо этого, все работает, как ожидалось.
Вот Plunker, который точно демонстрирует проблему. http://plnkr.co/edit/Cygawxjp4WN9xRbTEXWU?p=preview
Закомментируйте строку 41 и раскомментируйте строку 42 в script.js, чтобы увидеть проблему. Проверка не работает, и если вы откроете консоль браузера, вы увидите, что проверка класса проанализировала myForm.date как неопределенную.
Почему это происходит? Я предполагаю, что требование шаблона из URL-адреса является асинхронной операцией, но это не должно иметь значения для разработчика. Я потратил впустую часы и часы, пытаясь выяснить, что вызывает это. Благодарю.