Javascript 在隔离范围内使用自己的文本内容的角度指令

Javascript 在隔离范围内使用自己的文本内容的角度指令,javascript,html,angularjs,Javascript,Html,Angularjs,我正在制作一个自定义的角度指令,当你将鼠标移到某个单词或缩略图上时,它会显示一个图像。此指令将元素与属性showImage匹配。例如: mountain 看起来最简单的方法是在mouseover和mouseout上在指令的link属性中注册事件侦听器,但是这些侦听器是在不触发摘要循环的情况下注册的。所以,是的,我可以添加范围。$apply(),但这似乎不雅观,可能还有更好的方法 然后我发现了带有transclude选项的模板,看起来它们可能更接近我想要的。但在这里,我发现了两个问题。首先,我不想

我正在制作一个自定义的角度指令,当你将鼠标移到某个单词或缩略图上时,它会显示一个图像。此指令将元素与属性
showImage
匹配。例如:

mountain

看起来最简单的方法是在mouseover和mouseout上在指令的
link
属性中注册事件侦听器,但是这些侦听器是在不触发摘要循环的情况下注册的。所以,是的,我可以添加
范围。$apply()
,但这似乎不雅观,可能还有更好的方法

然后我发现了带有transclude选项的模板,看起来它们可能更接近我想要的。但在这里,我发现了两个问题。首先,我不想将文本/缩略图包装到另一个元素中,我只想向其中添加一些事件侦听器。我的另一个问题更复杂:我想使
showImage
的值可选,如:

mountain

这应该与第一个示例具有相同的效果。如果属性没有值,我希望它默认为HTML元素中文本的值。通过指令,我可以使用元素的属性设置隔离范围,但似乎没有办法将任何内容设置为内部文本的值。大概是这样的:

.directive('showImage', function() {
  return {
    restrict: 'E',
    scope: {
      showImage: 'textContent'
    },
    templateUrl: 'template.html'
  };
});

有没有更好的方法来实现我的目标?

虽然不推荐使用,但您可能希望查看指令定义对象上的
replace
标志。至于可选文本,一种方法是让showImage指令绘制文本。i、 e
并让模板负责显示文本的位置是的,我确实找到了
替换
,但由于它已被弃用(而且似乎没有合适的替代方案?),我想尝试避免它。另外,是的,这不是一个坏主意,将文本内容设置为可选而不是属性值。@codebreaker它被标记为不推荐,因为它不符合Web组件范例,并且在2.0中不可用。没有计划将其从1.x中删除。