Задать вопрос
banderos120
@banderos120
Играю на балалайке

Почему transclude не работает с input?

Здравствуйте.
Есть input:
<input type="text" name="name" value="0" rt-number/>

Есть директива:
angular.module('Wasya').directive('rtNumber', function(){
return {
restrict : 'A',
link : function($scope, el, attr){/*тут всякий код*/},
template: '<div class="wrap" ng-transclude></div>', // и если <ng-transclude></ng-transclude> тоже не работает
transclude : true,
scope : {}
};
});

Не работает с input , работает с div , span, sub . С другими не проверял.
Прошу помощи, а то уже адски бесит.
Да, и результатом работы с input-ом получается template обернутый input-ом .

Результат, который нужно получить:
<div class="wrap" ng-transclude>
    <input type="text" name="name" value="0" rt-number/>
</div>
  • Вопрос задан
  • 413 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 2
@telray
А какого результата вы ожидаете? И что у вас получается когда div элемент?
transclude служит для подстановки содержимого элемента на который вешается деректива в ng-transclude.
И когда вешаете на импут, импут остается и в него вставляется template. Хотя это странно, зачем в тег импут вообще что-то помешать, это не правильно совсем уж.
Ответ написан
@kostiknoir
angular.module('app').directive('rtNumber', [
  function() {
    return {
      restrict: 'A',
      link: function($scope, $el) {
        var wrapper = document.createElement('div');
        wrapper.className = 'wrap';
        
        var el = $el[0];
        el.parentNode.insertBefore(wrapper, el);
        wrapper.appendChild(el);
      }
    };
  }
]);
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
miraage
@miraage
Старый прогер
Посмотрите, что Вы хотите сделать.....
<!-- before directive -->
<input type="text" name="name" value="0" rt-number />

<!-- after directive -->
<input type="text" name="name" value="0" rt-number>
   <div class="wrap" ng-transclude></div>
</input>


Опишите детально, какой результат хотите получить - попробую помочь.
Ответ написан
Комментировать
@lega
Внутрь input "нельзя" поместить элементы, тут вам нужно подменить input шаблоном, на Angular Light можно сделать так.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы