0

次のディレクティブを使用して、入力要素でのキー入力の入力をリッスンしています。

.directive('ngEnter', function () {
    return function (scope, element, attrs) {
        element.bind("keypress", function (event) {
            if(event.which === 13) {
                scope.$apply(function (){
                    scope.$eval(attrs.ngEnter);
                });

                event.preventDefault();
            }
        });
    };
})

これは期待どおりに機能します。入力要素にツールチップ ディレクティブを追加すると、上記のディレクティブが機能しなくなります。これに対する回避策はありますか?

アップデート

bingjie2680 の提案の後、ng-keypress と ng-keydown を使用しようとしましたが、別の問題に遭遇しました。上記のディレクティブは、同じ要素の ng-model ディレクティブに影響を与えるようです。モデルが未定義になります。入力タグは次のとおりです。

<input type="text" placeholder="tags" 
       tooltip="tooltip text here"
       tooltip-placeent="top"
       tooltip-trigger="focus"
       ng-model="currentTag" ng-keydown="addTag($event)" />

addTag の関連部分は次のとおりです。

    $scope.addTag = function($event) {
        if ($event.keyCode !== 13) return;

        console.log($scope.currentTag);     <-- currentTag is undefined here
        ...
    }

モデルが未定義になるのはなぜですか? tooltip ディレクティブを含めなければ、すべて正常に動作します。

4

1 に答える 1

1

これを実際の問題に具体的にするために、ここに投稿しました。それは「ドット」スコープの問題でした。詳細はこちら

于 2013-09-29T13:37:45.880 に答える