0
我是一個角度初學者,我已經在這個問題上工作了幾天,但我還沒有完全解決它。我試圖創建一個指令,當用戶突出顯示一些文本時,ui-bootstrap工具提示會自動創建。我有下面的代碼幾乎做我想要的。角度位置Bootstrap元素內選定的文本
app.directive('selectOnClick', function ($window, $compile) {
return {
link: function (scope, element) {
element.on('mouseup', function() {
if (window.getSelection) {
var sel = window.getSelection();
var template = '<a href="#" uib-tooltip="hello">'+sel.toString()+'</a>';
replaced = element.html().replace(new RegExp(sel.toString(), "g"), template);
element.html(replaced);
$compile(element.contents())(scope);
}
});
}
}
});
與上面的代碼的問題是,它取代了提示所選文本的每個實例 - 我只想把工具提示周圍被選中的實際文本。
我見過像this one職位,將展示如何在span
元素替換選定的文本以下列方式
function surroundSelection() {
var span = document.createElement("span");
span.style.fontWeight = "bold";
span.style.color = "green";
if (window.getSelection) {
var sel = window.getSelection();
if (sel.rangeCount) {
var range = sel.getRangeAt(0).cloneRange();
range.surroundContents(span);
sel.removeAllRanges();
sel.addRange(range);
}
}
}
但我不認爲這種方法是與用戶界面的自舉元素,如提示不兼容。我很困難,所以任何建議將不勝感激。