2016-07-28 3 views
0

У меня есть директива, которая выглядит примерно следующий:Угловой компонент обертки принимает дополнительные директивы

.directive('textInput', function() { 
    return { 
    restrict: 'E', 
    replace: true, 
    transclude: false, 
    compile: function(element, attrs) { 
     var html = 
     '<div class="form-group">' + 
     '<label>{{ \'' + attrs.label + '\' | translate }}</label>' + 
     '<input type="text" class="form-control input-sm" placeholder="' + attrs.placeholder + 
     '" ng-model="' + attrs.ngModel + '"' + attrs.directives + '>' + 
     '</div>'; 

     var newElem = $(html); 
     element.replaceWith(newElem); 

     return function (scope, element, attrs, controller) { }; 
    } 
    }; 
}) 

Обратите внимание, что атрибут directives был строкой, добавлена ​​дополнительная информация атрибута (например, подсказка информации)

I преобразовали его в 1.5 component, но я не могу сделать то же самое с определением directives.

.component('textInput', { 
    bindings: { 
    label: '@', 
    placeholder: '@', 
    directives: '<', 
    ngModel: '=' 
    }, 
    require: { 
    ngModelCtrl: 'ngModel' 
    }, 
    template: 
    '<div class="form-group">' + 
     '<label ng-if="$ctrl.label">{{$ctrl.label | translate }}</label>' + 
     '<input' + 
     ' type="text"' + 
     ' class="form-control input-sm"' + 
     ' placeholder="{{$ctrl.placeholder}}"' + 
     ' ng-model="$ctrl.ngModel"' + 
     ' {{$ctrl.directives}}>' + 
    '</div>' 
}) 

<text-input directives="tooltip='foobar'"></text-input> 

Как я могу передать строку в <text-input/> элемента таким образом, что основной шаблон получает правильную информацию?

ответ

0

Это не представляется возможным, в соответствии с Документами ,:

Если не использовать компоненты:

директив, которые полагаются на манипуляции DOM, добавление слушателей событий и т.д., так как компилировать и компоновать функции недоступны, когда вам нужны дополнительные параметры определения директивы, такие как priority, terminal, , если вы хотите, чтобы директива, вызванная атрибутом или классом CSS, а не элементом

и на той же странице говорится, что компоненты не имеют функции compile.

Смежные вопросы