Как передать 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);
        }
    });
}
Другие вопросы по тегам