У меня возникла следующая проблема: мой клиент хочет, чтобы моя угловая директива полностью меняла внешний вид. Это означает, что для меня мне нужно будет полностью заменить шаблон, когда пользователь нажмет этот элемент. Я не смог найти ответ в Интернете, поэтому решил спросить.
Я попытался передать шаблон "несфокусированный" в разделе шаблона директивы и связать с событием фокуса в ссылке следующим образом:
post: function (scope, element, attrs) {
element.bind('focus',function(event){
element.html('<span..../span>');
$compile(element)(scope);
});
}
Но он вызывает ошибку (входной шаблон "несфокусированный")
Uncaught Error: [$compile:multidir] Multiple directives
[ngModel, ngModel] asking for 'ngModel' controller on: <input....
Решение должно быть совместимо с Angular 1.2, которое я должен использовать.
ng-if
не будет отображать элемент вообще, если условие ложно. В вашем комментарии у вас есть вход, вложенный в диапазон, поэтому span является корневым элементом. Вы можете иметь как диапазон, так и ввод в качестве элементов верхнего уровня в своем шаблоне.
<input ng-if="focusCondition"/>
<span ng-if="!focusCondition"></span>
Тогда элемент, который отображается, должен быть корневым элементом.
Вы можете использовать директиву ng-switch и отображать только те шаблоны, которые должны отображаться в фокусе.
ng-if
для изменения внешнего вида.