次のディレクティブを使用して、入力要素でのキー入力の入力をリッスンしています。
.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 ディレクティブを含めなければ、すべて正常に動作します。