1

我在我自己的指令中使用標籤輸入作爲嵌套指令。我想通過一個任意索引像這樣在我的指令屬性:將tabindex作爲嵌套指令使用時,如何將tabindex傳遞給tags-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

我伸出手來解決問題! 我把keydown的一個聽衆,然後一個計數器來計算我點擊Tab鍵的時間。當計數器(scope.indexOfTab)變得等於我爲tag-input指令設置的tabindex時,我得到相關標籤來關注tags-input($('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); 
     } 
    }); 
} 
相關問題