簡単な Angular ディレクティブを作成しましたが、これはうまく機能しています。
ここにデモがあります: http://jsbin.com/tesido/edit?html,js,output
ディレクティブ (Bootstrap 3 用) :
// registers native Twitter Bootstrap 3 tooltips
app.directive('bootstrapTooltip', function() {
return function(scope, element, attrs) {
attrs.$observe('title',function(title){
// Destroy any existing tooltips (otherwise new ones won't get initialized)
element.tooltip('destroy');
// Only initialize the tooltip if there's text (prevents empty tooltips)
if (jQuery.trim(title)) element.tooltip();
})
element.on('$destroy', function() {
element.tooltip('destroy');
delete attrs.$$observers['title'];
});
}
});
注: Bootstrap 4 を使用している場合は、上記の 6 行目と 11 行目を次のように置き換える必要がありますtooltip('destroy')
(tooltip('dispose')
この更新については user1191559 に感謝します) 。
bootstrap-tooltip
.を持つ任意の要素に属性として追加するだけtitle
です。Angular は への変更を監視しますが、title
それ以外の場合はツールチップの処理を Bootstrap に渡します。
これにより、ネイティブのBootstrap Tooltip Optionsdata-
を通常の Bootstrap の方法で属性として使用することもできます。
マークアップ:
<div bootstrap-tooltip data-placement="left" title="Tooltip on left">
Tooltip on left
</div>
明らかに、これには AngularStrap と UI Bootstrap が提供するすべての精巧なバインディングと高度な統合が含まれているわけではありませんが、Angular アプリで Bootstrap の JS を既に使用していて、基本的なツールチップ ブリッジだけでアプリ全体に渡って必要な場合は、良い解決策です。コントローラーの変更またはマウス イベントの管理。