Использование 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-адреса является асинхронной операцией, но это не должно иметь значения для разработчика. Я потратил впустую часы и часы, пытаясь выяснить, что вызывает это. Благодарю.

0 ответов

Другие вопросы по тегам