[angularjs] AngularJS와 함께 부트 스트랩 도구 설명 사용

내 앱에서 Bootstrap 툴팁을 사용하려고합니다. 내 앱은 AngularJS를 사용하고 있습니다. 현재 다음이 있습니다.

<button type="button" class="btn btn-default"
        data-toggle="tooltip" data-placement="left"
        title="Tooltip on left">
            Tooltip on left
</button>

내가 사용해야 할 것 같아요

$("[data-toggle=tooltip]").tooltip();

그러나 확실하지 않습니다. 위의 줄을 추가해도 내 코드가 작동하지 않습니다. 필요한 것보다 더 많은 UI 부트 스트랩을 사용하지 않으려 고합니다. 그러나 툴팁 부분 만 포함해야한다면 그것에 대해 개방적 일 것입니다. 하지만 어떻게해야할지 모르겠습니다.

누군가가 AngularJS에서 작동하는 Bootstrap Tooltip을 얻는 방법을 보여줄 수 있습니까?



답변

도구 설명이 처음부터 작동하도록하려면 코드에서 초기화해야합니다. AngularJS를 잠시 무시하면 다음과 같이 jQuery에서 도구 설명을 사용할 수 있습니다.

$(document).ready(function(){
    $('[data-toggle=tooltip]').hover(function(){
        // on mouseenter
        $(this).tooltip('show');
    }, function(){
        // on mouseleave
        $(this).tooltip('hide');
    });
});

Angular가 렌더링 한 콘텐츠 (예 : ng-repeat)가 아닌 한 AngularJS 앱에서도 작동합니다. 이 경우이를 처리하기위한 지시문을 작성해야합니다. 나를 위해 일한 간단한 지시문은 다음과 같습니다.

app.directive('tooltip', function(){
    return {
        restrict: 'A',
        link: function(scope, element, attrs){
            element.hover(function(){
                // on mouseenter
                element.tooltip('show');
            }, function(){
                // on mouseleave
                element.tooltip('hide');
            });
        }
    };
});

그런 다음 도구 설명을 표시 할 요소에 “tooltip”속성을 포함하기 만하면됩니다.

<a href="#0" title="My Tooltip!" data-toggle="tooltip" data-placement="top" tooltip>My Tooltip Link</a>

도움이 되었기를 바랍니다.


답변

내가 생각 해낼 수 있었던 최고의 해결책은 다음과 같이 요소에 “onmouseenter”속성을 포함하는 것입니다.

<button type="button" class="btn btn-default"
    data-placement="left"
    title="Tooltip on left"
    onmouseenter="$(this).tooltip('show')">
</button>


답변

간단한 대답UI 부트 스트랩 (사용 ui.bootstrap.tooltip를 )

이 질문에 대한 매우 복잡한 답변이 많이있는 것 같습니다. 여기에 저에게 효과적이었습니다.

  1. UI 부트 스트랩 설치$ bower install angular-bootstrap

  2. UI 부트 스트랩을 종속성으로 삽입- angular.module('myModule', ['ui.bootstrap']);

  3. 사용 UIB – 툴팁 지시어를 당신의 HTML에.


<button class="btn btn-default"
        type="button"
        uib-tooltip="I'm a tooltip!">
     I'm a button!
</button>


답변

Angular 앱을 빌드하는 경우 jQuery 사용할 있지만 더 각도 중심의 패러다임을 선호하기 위해이를 피해야하는 많은 이유가 있습니다. 부트 스트랩에서 제공하는 스타일을 계속 사용할 수 있지만 UI 부트 스트랩 을 사용하여 jQuery 플러그인을 기본 각도로 대체 할 수 있습니다.

Boostrap CSS 파일, Angular.js 및 ui.Bootstrap.js를 포함합니다.

<link href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet">
<script src="https://code.angularjs.org/1.2.20/angular.js"></script>
<script src="//angular-ui.github.io/bootstrap/ui-bootstrap-tpls-0.11.0.js"></script>

ui.bootstrap다음과 같이 모듈을 만들 때 삽입했는지 확인하십시오 .

var app = angular.module('plunker', ['ui.bootstrap']);

그런 다음 jQuery가 선택한 데이터 속성 대신 각도 지시문을 사용할 수 있습니다.

<button type="button" class="btn btn-default"
        title="Tooltip on left" data-toggle="tooltip" data-placement="left"
        tooltip="Tooltip on left" tooltip-placement="left" >
  Tooltip on left
</button>

Plunker 데모


UI 부트 스트랩 피하기

jQuery.min.js (94kb) + Bootstrap.min.js (32kb) 는 필요한 것보다 더 많은 것을 제공하며 ui-bootstrap.min.js (41kb) 보다 훨씬 더 많은 것을 제공 합니다.

그리고 모듈 다운로드에 소요되는 시간은 성능의 한 측면 일뿐입니다.

필요한 모듈 만로드하려면 “Create a Build”를 선택하고 Bootstrap-UI 웹 사이트 에서 툴팁을 선택할 수 있습니다 . 또는 도구 설명에 대한 소스 코드를 탐색하고 필요한 것을 선택할 수 있습니다.

툴팁과 템플릿 만있는 축소 된 사용자 지정 빌드 (6kb)


답변

Bootstrap JS와 jQuery를 포함 시켰습니까?

<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script src="//netdna.bootstrapcdn.com/bootstrap/3.0.2/js/bootstrap.min.js"></script>

아직로드하지 않았다면 Angular UI ( http://angular-ui.github.io/bootstrap/ )가 많은 오버 헤드가 아닐 수 있습니다. Angular 앱과 함께 사용하고 Tooltip 지시문이 있습니다. 사용해보십시오tooltip="tiptext"

<button type="button" class="btn btn-default"
        data-toggle="tooltip" data-placement="left"
        title="Tooltip on left"
        tooltip="This is a Bootstrap tooltip"
        tooltip-placement="left" >
            Tooltip on left
</button>


답변

저는 우리에게 잘 작동하는 간단한 Angular Directive를 작성했습니다.

데모 : http://jsbin.com/tesido/edit?html,js,output

지시문 (부트 스트랩 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하지만 그렇지 않으면 툴팁 처리를 부트 스트랩으로 전달합니다.

또한 기본 부트 스트랩 도구 설명 옵션data-일반 부트 스트랩 방식의 속성 으로 사용할 수 있습니다 .

마크 업 :

<div bootstrap-tooltip data-placement="left" title="Tooltip on left">
        Tooltip on left
</div>

분명히 이것은 AngularStrap 및 UI Bootstrap이 제공하는 정교한 바인딩 및 고급 통합을 모두 가지고 있지는 않지만 Angular 앱에서 Bootstrap의 JS를 이미 사용하고 있고 전체 앱에 기본 도구 설명 브리지가 필요한 경우 좋은 솔루션입니다. 컨트롤러 수정 또는 마우스 이벤트 관리.


답변

동적 단일 페이지 애플리케이션에 대한 selector 옵션 을 사용할 수 있습니다 .

jQuery(function($) {
    $(document).tooltip({
        selector: '[data-toggle="tooltip"]'
    });
});

선택기가 제공되면 도구 설명 개체가 지정된 대상에 위임됩니다. 실제로 이것은 도구 설명을 추가 할 수 있도록 동적 HTML 콘텐츠를 활성화하는 데 사용됩니다.