2016-04-05 2 views
1

Я создал простое приложение AngularJS, проблема в том, что всякий раз, когда мой просмотр будет автоматически обновляться из-за изменений в модели (которые не показаны в примере ниже), всплывающая подсказка не работает Больше не выглядите как всплывающая подсказка.Инициализация всплывающих подсказок после angularJS View обновила

Я нашел этот ответ satckoverflow, но я не знаю, как применить это решение. Может быть, кто-то может показать мне подход из предоставленной ссылки в MWE ниже.

<div class="container" ng-app="testApp" ng-controller="testController"> 
    <h3>Data from Scope: {{data}}</h3> 
    <a href="#" data-toggle="tooltip" title="Hooray!">Hover over me</a> 
    <button type="button" ng-click="refresh()">refresh data</button> 
</div> 

<script> 
    $(document).ready(function() { 
     $('[data-toggle="tooltip"]').tooltip(); 
    }); 
</script> 

<script> 
    var app = angular.module('testApp', []); 
    app.controller('testController', function($scope) { 
    $scope.data= 123; 
    $scope.refresh = function() { 
     $scope.data= Math.random(); 
    } 
    }); 
</script> 
+0

Ваше имя приложения отличается в html и JS? Также вы собираетесь использовать маршрутизатор в своем проекте? –

+0

обновлен mwe – d4rty

+0

Вы используете AngularStrap? –

ответ

2

Используйте этот динамический рабочий код.

$(document).on('mouseover','[data-toggle="tooltip"]',function(){ 
    $(this).tooltip('show'); 
}); 

Идея когда-либо вы наведите курсор мыши на элементах, которые имеют [data-toggle="tooltip"] набор атрибутов на них, в подсказке отображается. Это работает для всех элементов (статических и динамических)

+0

Это работает, спасибо, но как мне изменить элемент кнопки, чтобы избежать появления всплывающей подсказки в 2 раза? – d4rty

+0

ли это решение поднимает его два раза ?? вам нужно удалить свой код, где вы примените всплывающую подсказку на готовом документе .. только этого выше кода достаточно. если у вас все еще есть проблемы, попробуйте этот '$ (this) .tooltip ('destroy')'. уничтожить всплывающую подсказку, а затем снова применить ее. –

+0

@ d4rty, если это решение устраняет проблему, отметьте ее как ответ. –

1

Если вы используете ngRoute в своем проекте, вы можете поместить приведенный ниже код в свой контроллер.

$scope.$on('$viewContentLoaded', function(event){ 
    console.log('content loaded!') 
    }); 

В противном случае обернуть код в $ таймаут,

var app = angular.module('testApp', []); 
    app.controller('testController', function($scope, $timeout) { 
    $timeout(function(){ 
     $scope.data= "hello"; 
    }); 
    }); 
+0

где именно я должен поставить код ngRoute в контроллер? – d4rty

Смежные вопросы