AngularJS显示工具提示字符串数组的内容/ HTML

时间:2016-03-03 02:55:04

标签: jquery angularjs twitter-bootstrap pug

HTML(Jade):

a(href='#', data-placement='right', title="{{ someArrayOfStrings }}" tooltip)

其中someArrayOfStrings在我的角度控制器初始化期间被赋予一个值:

角:

var myController = function($scope) {
    $scope.initialize = function(someArrayOfStrings) {
        $scope.someArrayOfStrings = someArrayOfStrings;
    }
};

var tooltip = function() {
    return {
        restrict: 'A',
        link: function(scope, element, attrs){
            $(element).hover(function(){
                $(element).tooltip('show');
            }, function(){
                $(element).tooltip('hide');
            });
        }
    };
};

目前,这将提供我的工具提示内容,如下所示:

["string1","string2","string3"]

这是丑陋的,完全不是我想要的。

我想要显示的是这样的:

string1
string2
string3

我已经四处寻找,似乎有很多方法可以解决这个问题,但到目前为止,我还没有设法让它工作得很好,例如http://jsfiddle.net/superscript18/fu7a2/6/http://jsfiddle.net/WR76R/Render Html String in tooltip

或者,我也许可以使用由<br/>标记分隔的连接字符串。但是,这需要我的工具提示接受HTML标记。似乎有一个工具提示选项,即html: true,但我无法让它工作。

想法/帮助?

演示小提琴@ jsfiddle.net/zr89sq6L/6/

2 个答案:

答案 0 :(得分:1)

尝试此解决方案jsfiddle

  • 首先,创建指令,创建工具提示 $(element).tooltip({html: 'true'})

  • 其次,使用stringArray.join('<br>')使用 br 创建字符串。

示例:

&#13;
&#13;
var myApp = angular.module('myApp', []);

myApp.controller('MyCtrl', function($scope) {
    $scope.name = 'Superhero';
    $scope.stringArray = ["string1", "string2", "string3"];

  })
  .directive('tooltip', function() {
    return {
      restrict: "A",
      link: function(scope, element) {
        $(element).tooltip({
          html: 'true'
        });
      }
    }
  });
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.9.0/jquery-ui.js"></script>
<link href="http://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css" rel="stylesheet" type="text/css" />
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.min.js"></script>
<div ng-app="myApp">
  <div ng-controller="MyCtrl">
    Hello, {{name}}!
    <div ng-repeat="string in stringArray">
      {{ string }}
    </div>
    <a href="#" data-placement="right" title="{{ stringArray.join('<br>') }}" tooltip>tooltip</a>
  </div>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您只需将标题属性设置为title="{{ stringArray.join('\u000A') }}"即可。请检查小提琴http://jsfiddle.net/Noblemo/u9tt9xb2/