2016-04-05 12 views
1

単純なAngularJSアプリケーションを作成しましたが、問題は、モデルの変更によってビューが自動的に更新される(以下の例では表示されません)もはやブートストラップのツールチップのように見えません。angularJSビューが更新された後にブートストラップツールチップを初期化する

私はこの回答が見つかりました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

使用このダイナミックな作業コードをあなたのコードをラップ。あなたがそれらの上にセット[data-toggle="tooltip"]属性を持つ要素の上にマウスを置くこれまで、ツールチップが表示されたときに

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

アイデアです。これはすべての要素(静的および動的)に対して機能します

+0

ありがとうございますが、ツールチップの2倍のポップアップを避けるためにボタン要素を変更する必要がありますか? – d4rty

+0

このソリューションでは2回の起動が行われますか?あなたはドキュメントの準備ができたら、ツールチップを適用するコードを削除する必要があります。上記のコードだけで十分です。それでも問題がある場合は、この '$(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

関連する問題