Я пытаюсь написать директиву, которая заменяет поле ввода настраиваемым полем ввода. Однако я не могу заставить привязку данных работать, поскольку модель не отображается в поле ввода директивы.databinding настраиваемая директива угловая с заменой html в функции компиляции
Я создал jsFiddle здесь:
http://jsfiddle.net/6HcGS/392/
Я предполагаю, что я действительно не знаю, что место здесь для привязки данных к работе:
tElement.replaceWith('<input ng-model="ngModel" type="text" />');
Если кто-то может помочь мне, что я был бы очень благодарен, поскольку это было проблемой для меня целый день.
Cheers!
Thnx много для этой первой скрипки! Выглядит именно то, что мне нужно. Один вопрос, однако, может быть проблемой, что мы переместили создание шаблона в функцию связывания? Есть ли последствия? –
Возможны проблемы с производительностью. Функция привязки вызывается для каждой директивы zippy. Функция компиляции вызывается только один раз. Если вы просто хотите изменить dom, сделайте это в функции компиляции. Но если вам нужны какие-то зависящие от поведения изменения, сделайте это в функции связывания. Проще говоря: если вам нужно получить доступ к области, вам нужно сделать это в функции связывания. – bekite
Теперь я хочу получить доступ к контроллеру ngModel (чтобы позже использовать setValidity для проверки пользовательского поля ввода). Однако, когда я хочу использовать директиву как атрибут (не класс), функция replaceWith выдает ошибку, которая не может найти ngModel-контроллер. Я создал скрипку здесь: http://jsfiddle.net/6HcGS/396/ –