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 просмотров
Решения вопроса 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 можно сделать так.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы