AngularJS 1.3.0-beta.2、jQuery 2.1.0、Angular UI 0.11、およびAngular UIのツールチップウィジェットのカスタムバージョンを使用しています。ツールチップ内のボタンをクリックすると、ツールチップが閉じます。
重要な部分はcrud_tooltip.js:372にあります:
scope.closePopup = function() {
var trigger = element.prev();
if (scope.mode === 'timeout') {
$timeout(function() {
trigger.triggerHandler('click');
});
}
else {
trigger.triggerHandler('click');
}
};
$ timeoutを使用するバージョンは機能しますが、ボタンをクリックしてからポップアップが閉じるまでに顕著な遅延があります。
$ timeoutを使用していないバージョンでは、エラーが発生します:[$ rootScope:inprog] $ applyはすでに進行中です。とにかくポップアップを閉じます...理由はわかりません。
ユーザーがツールチップ内のボタンをクリックするとすぐにツールチップを閉じるように、closePopup(またはそれを呼び出すng-click)を変更するにはどうすればよいですか?
注:このプランカーをガイドラインとして使用して、AngularUIのツールチップコードからcustom_tooltip.jsコードを適合させました。また、tt_isOpen値を直接変更し、新しいcrudtooltip-toggle属性を定義しようとしましたが、どちらも成功は非常に限られていました。
たぶん私は要点を見逃しているかもしれませんが、あなたのコードは信じられないほど複雑で、そのような単純な機能のために複雑に見えます。いずれにせよ、遅延は実際$timeout
にはアニメーションが終了するのを待っているためです。scope.tt_animation
評価が真実であるため、タイムアウトがトリガーされます。の258行目でタイムアウトを0に変更するだけでcrud_tooltip.js
、問題が修正されます。このプランクを見る
問題のある領域は次のとおりです。
if ( scope.tt_animation ) {
transitionTimeout = $timeout(removeTooltip, 500);
} else {
removeTooltip();
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加