关于angularjs:角$ watch事件不会触发window.getSelection()。anchorNode中的更改

Angular $watch event isn't firing on change in window.getSelection().anchorNode

我关注用户突出显示的文本中的更改。 我根据突出显示的DOM元素触发。 我有以下功能:

$ scope。$ watch(function(scope){return window.getSelection()。anchorNode},
function(){console.log(window.getSelection()。anchorNode;}

无论页面高亮显示什么,页面加载时只会触发一次,而不会触发。 我突出显示了各种跨度的文本,页面上的文本区域,但这不会触发。

如果我添加了不执行任何操作的$ interval函数,则在间隔时间之后选择更改时,此手表会触发。

有任何想法吗 ?


在您的实例中,$ watch将不起作用,因为没有$ scope变量正在更新,并且$ digest循环将不会开始。

您可以尝试使用ngMouseup指令获取最后突出显示的文本并保存。

HTML:

1
lots of text

JS:

1
2
3
$scope.updateHighlightedText = function () {
    $scope.highlightedText = window.getSelection().toString();
}

这是jsfiddle中的工作示例