Как передать tabindex модулю узла ввода тегов при использовании его в качестве вложенной директивы?
Я использую теги input как вложенную директиву в моей собственной директиве. Я хочу передать произвольный индекс в качестве атрибута в моей директиве следующим образом:
<dp-tags dp-tabindex="3" ng-model="vm.cityModel.dpTags" load="vm.loadTagts" display-field="title"></dp-tags>
Это вызовет шаблон моей директивы, какие теги введены в него. Я также настроил мою директиву, поскольку я помещаю связанную часть здесь:
scope: {
'load': '&',
'placeHolder': '@',
'serverErr': '=',
'pattern': '@',
'displayField': '@',
'tagTemplate':'@',
'autoCompleteTemplate':'@',
'dpTagLabel':'@',
editDisabled:'@',
dpTabindex: '='
},
и теги ввода в моей директиве, как это:
<tags-input type="text"
tabindex="{{dpTabindex}}"
allowed-tags-pattern="{{pattern}}"
on-tag-adding="checkTag($tag)"
display-property="{{displayField}}"
name="tags1"
class=""
ng-required="false"
ng-model="internalTag"
placeholder="{{placeHolder}}"
template="{{tagTemplate}}"
add-on-comma="false"
min-length="2"
ng-disabled="editDisabled"
>
<auto-complete source="load()($query)" template="{{autoCompleteTemplate}}" min-length="2"></auto-complete>
</tags-input>
Но это не работает, где, как и в других моих директивах (шаблоны для select/textfield), у меня нет проблем с этим методом. Я очень ценю, если вы поможете мне решить эту проблему. Благодарю.
1 ответ
Я дотянулся до решения! Я поставил слушателя для нажатия клавиш, а затем счетчик, чтобы посчитать, сколько раз я нажал клавишу Tab. Когда счетчик (scope.indexOfTab
) становится равным tabindex, который я установил для директивы тегов-ввода, я получаю связанный тег для фокусировки в тегах-вводе ($('tags-input div')
), Я нашел его, нажав "Осмотреть" в поле ввода, затем добавил метод фокусировки, как показано ниже:
link(scope, elm, attr, ngModel) {
scope.indexOfTab = 0;
scope.keydown = $(document).on("keydown", function (e) {
if ((e.keyCode || e.which) == 9) {
scope.indexOfTab = scope.indexOfTab + 1;
if (scope.indexOfTab == scope.dpTabindex) {
$('tags-input div').focus();
}
console.log("scope.indexOfTab: " + scope.indexOfTab);
}
});
}