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中的工作示例