簡體   English   中英

將數組傳遞給angular指令

[英]Pass an array to angular directive

我有此指令,它會在輸入字段出現時將焦點設置在輸入字段上,而在失去焦點或按esc / enter / tab鍵時將其隱藏。 它工作得很好,但是我想知道是否有一種方法可以傳遞鍵(和事件類型)的數組或對象,而不是將鍵和事件硬編碼到指令本身中? 這是代碼:

.directive('bindKeys', function ($timeout) {

    return {
        restrict: 'A',
        scope: {
            trigger: '='
        },

        link: function(scope, elem){

            elem.bind('keydown keypress blur', function (event) {
                    if(event.which === 13 || event.which === 9 || event.which === 27 || event.type === 'blur') {
                        event.preventDefault();
                        $timeout(function(){
                            scope.trigger.property = false;
                        });
                    }
                });
            scope.$watch('trigger.property', function(value) {

                if(value === true) {
                    $timeout(function() {
                        elem[0].focus();
                    });
                }
            });
        }
    };
});

該元素如下所示:

<input bindKeys trigger='trigger'></input>

謝謝

你當然可以。 有一些模塊提供您的陣列

.value('events', ['blur', 'keypress'])

然后將它們注入到您的指令中(事件var名稱必須與上面的鍵匹配)。

.directive('bindKeys', function ($timeout, events) {
    // ...
    element.bind(events.join(' '), function() {})
}

注入數組的另一種語法是通過顯式定義vars的名稱

.directive('bindKeys', ['$timeout', 'events', function ($timeout, events) {})

在此處查看有關依賴項注入的更多信息: https : //docs.angularjs.org/guide/di

並在此處的模塊上: https : //docs.angularjs.org/guide/module

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM