带有angularjs的Bootstrap工具提示,使用$ http加载工具提示的内容

时间:2013-03-28 02:58:53

标签: twitter-bootstrap angularjs tooltip

我遇到了一个我似乎无法弄清楚的小问题。下面的代码有效,除了您第一次将鼠标悬停在链接上。非常感谢任何帮助。

http://jsfiddle.net/LpK6d/1/

<div ng-app="myApp">
<a
    class="pop-over"
    data-original-title="default value"
    data-placement="top">test link</a>
</div> 
var app = angular.module("myApp", []);

app.directive('popOver', function($http) {
  return {
    restrict: 'C',
    link: function(scope, element, attr) {

        element.bind('mouseover', function(e) {
            $http.get("http://ip.jsontest.com/?callback=someFunction")
              .success(function(data) {
                 attr.$set('originalTitle', data);
                 element.tooltip();                  
              });
            })
        }
    }
});

1 个答案:

答案 0 :(得分:4)

好的,所以在AJAX调用之前调用.tooltip()似乎是个好主意,但是该方法会将data-original-title'title'复制到其内部变量中,因此我们无法更改它: (。

问题是调用tooltip()它只是监听onmouseover事件。您必须致电.tooltip('show')以使其以编程方式显示。

这是工作小提琴:http://jsfiddle.net/rB5zT/49/

这是正确的方法:

var app =  angular.module("myApp", [])
app.directive('popOver', function($http) {
 return {
  restrict: 'C',
  link: function(scope, element, attr) {
    var i =0;
    element.tooltip();
    $(element).bind('mouseover',function(e) {

        $http.get("test").success(function(){
           attr.$set('originalTitle', "Some text "+i++);  
            element.tooltip('show');
         });
        });
   }
 }
});