0
我有一个简单而漂亮的工具提示代码(由别人编写),它不需要角度就可以很好地工作,不像它那样。我一直在想我可以以角度使用它的最佳方式。下面的代码是:提供角度,服务/指令的工具提示
$(document).ready(function() {
(function() {
var moveLeft = 0;
var moveDown = 0;
$('a.popper').hover(function (e) {
console.log("Here it is");
var target = '#' + ($(this).attr('data-popbox'));
$(target).show();
//moveLeft = $(this).outerWidth();
moveLeft = 15;
//moveDown = ($(target).outerHeight()/4);
moveDown = -15;
}, function() {
var target = '#' + ($(this).attr('data-popbox'));
$(target).hide();
});
$('a.popper').mousemove(function (e) {
console.log('mousemove');
var target = '#' + ($(this).attr('data-popbox'));
leftD = e.pageX + parseInt(moveLeft);
maxRight = leftD + $(target).outerWidth();
windowLeft = $(window).width() - 40;
windowRight = 0;
maxLeft = e.pageX - (parseInt(moveLeft) + $(target).outerWidth() + 20);
if (maxRight > windowLeft && maxLeft > windowRight) {
leftD = maxLeft;
}
topD = e.pageY - parseInt(moveDown);
maxBottom = parseInt(e.pageY + parseInt(moveDown) + 20);
windowBottom = parseInt(parseInt($(document).scrollTop()) + parseInt($(window).height()));
maxTop = topD;
windowTop = parseInt($(document).scrollTop());
if (maxBottom > windowBottom) {
topD = windowBottom - $(target).outerHeight() - 20;
} else if (maxTop < windowTop) {
topD = windowTop + 20;
}
$(target).css('top', topD).css('left', leftD);
});
})();
});
请注意,此代码工作得很好,我有jQuery的包括顶部,如果我注入的代码与镀铬控制台,出现提示它应该。我恳请你们提供一个方法,这个代码可以和角度一起使用,也许有服务/工厂。我所能看到的唯一问题就是据我所知,DOM逻辑不应该写在服务或工厂中(纠正错误)。我正在考虑将其置于指令中,但我不确定这是否正确,以及我该怎么做。
我有几个视图使用工具提示,所以我不能只把整个代码放在控制器本身。
这是不是一个真正的答案,但角引导有漂亮整洁的工具提示:https://angular-ui.github.io/bootstrap/#/tooltip –
任何像这样的代码必须放在指令中,但是有许多可用的角度模块可用于没有任何jQuery依赖性的工具提示。强烈建议阅读[thinking-in-angularjs-if-i-have-a-jquery-background](http://stackoverflow.com/questions/14994391/thinking-in-angularjs-if-i-have-a-jquery -background) – charlietfl
操纵DOM的代码应该放在指令中。 AngularJS指令使用称为[jqLite]的jQuery的扩展子集(https://docs.angularjs.org/api/ng/function/angular.element#angular-s-jqlite)。如果jQuery库包含在AngularJS库之前,那么AngularJS框架会自动用带有jqLite Extras的jQuery替换jqLite。有关更多信息,请参阅[AngularJS angular.element API参考](https://docs.angularjs.org/api/ng/function/angular.element)。 – georgeawg