Angular $ watch事件不会触发window.getSelection()。anchorNode中的更改

时间:2015-09-30 18:23:05

标签: angularjs highlight intervals watch

我会留意用户突出显示的文字的变化。我基于突出显示的DOM元素触发。我有以下功能:

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

它只会在页面加载时触发一次,而不会再次触发,无论我突出显示什么文本。我在页面上的各个跨度,文本区域中突出显示文本,但这并不会触发。

如果我添加$ interval函数,它会在间隔时间之后选择更改时触发。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

在你的实例中,$ watch将无法工作,因为没有更新$ scope变量且$ digest循环将无法启动。

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

HTML:

<div ng-mouseup="updateHighlightedText()">lots of text</div>

JS:

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

以下是jsfiddle

中的工作示例