実現したいこと
AngularJSでバリデーションでエラーメッセージをツールチップで表示したいです。
以下のjQueryとbootstrap.jsで作成されたDirectiveを参考に作成しているのですが、
ui-bootstrapで実現するにはどのようにすればよいでしょうか?
参考サンプル
試したこと
jQueryでtooltipを設定している箇所でui-tooltipの属性を追加しようとしたり、試しているのですが、うまくいきません。
Angularjs
1<script> 2 var app = angular.module("app", ['ui.bootstrap']); 3 app.controller('Ctrl', function ($scope) {}); 4 app.directive('validationMessage', function () { 5 return { 6 restrict: 'A', 7 priority: 1000, 8 require: '^validationTooltip', 9 link: function (scope, element, attr, ctrl) { 10 ctrl.$addExpression(attr.ngIf || true); 11 } 12 } 13 }); 14 app.directive('validationTooltip', function ($timeout) { 15 return { 16 restrict: 'E', 17 transclude: true, 18 require: '^form', 19 scope: {}, 20 template: '<span class="label label-danger span1" ng-show="errorCount > 0">hover to show err</span>', 21 controller: function ($scope) { 22 var expressions = []; 23 $scope.errorCount = 0; 24 25 this.$addExpression = function (expr) { 26 expressions.push(expr); 27 } 28 $scope.$watch(function () { 29 var count = 0; 30 angular.forEach(expressions, function (expr) { 31 if ($scope.$eval(expr)) { 32 ++count; 33 } 34 }); 35 return count; 36 37 }, function (newVal) { 38 $scope.errorCount = newVal; 39 }); 40 41 }, 42 link: function (scope, element, attr, formController, transcludeFn) { 43 scope.$form = formController; 44 45 transcludeFn(scope, function (clone) { 46 47 / 48 var badge = element[0].firstChild; 49 var tooltip = angular.element('<div class="validationMessageTemplate tooltip-danger" />'); 50 tooltip.append(clone); 51 element.append(tooltip); 52 $timeout(function () { 53 54 55 scope.$field = formController[attr.target]; 56 badge.attr( 'uib-tooltip', "test") 57 58 }); 59 }); 60 } 61 62 } 63 }); 64</script>
あなたの回答
tips
プレビュー