У меня есть директива, которая выглядит примерно следующий:Угловой компонент обертки принимает дополнительные директивы
.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/>
элемента таким образом, что основной шаблон получает правильную информацию?