我想我需要做一些事情:
<li on-mouseover="{{ myHoverHandler }}">blah</li>
因为处理点击次数如下所示:
<li on-click="{{ myClickHandler }}">blah</li>
我已尝试使用此处文档中显示的方式:declarative event mapping,但on-mouseenter
和on-mouseover
未按预期工作。
我也无法将参数传递给我的处理程序,但这是一个不同的故事。
答案 0 :(得分:21)
on-mouseover
和on-mouseout
是正确的,这是一个Stack Snippet
的演示:
<script src="//cdnjs.cloudflare.com/ajax/libs/polymer/0.3.3/platform.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/polymer/0.3.3/polymer.js"></script>
<my-app></my-app>
<polymer-element name='my-app'>
<template>
<button on-mouseover='{{onHovered}}'
on-mouseout='{{onUnhovered}}'>
A humble button
</button>
<div>
hovered: {{hovered}}
</div>
</template>
<script>
Polymer('my-app', {
hovered: false,
onHovered: function() {
this.hovered = true;
},
onUnhovered: function() {
this.hovered = false;
}
})
</script>
</polymer-element>
您的元素可能没有myHoverHandler
属性。也许有一个错字?
至于是否使用Polymer事件绑定与其他方法,你绝对可以使用vanilla js或jquery或其他方法。 Polymer处理繁忙的工作,例如确保事件处理程序在条件和重复模板中注册,将this
绑定到通常所需的元素,并在从元素移除元素时取消注册处理程序DOM。有时虽然手动操作也是有道理的。
答案 1 :(得分:5)
实际上它应该是
<button on-mouseover='onHovered'
on-mouseout='onUnhovered'>
没有花括号。此外,如果您需要在事件处理函数中使用它们,则不需要传入属性。
答案 2 :(得分:1)
如果您需要对主机 - 组件本身进行悬停做出反应,则应使用侦听器:
<dom-module id="hoverable-component">
<template>
<div>Hoverable Component</div>
</template>
<script>
Polymer({
is: 'hoverable-component',
listeners: {
mouseover: '_onHostHover',
mouseout: '_onHostUnhover',
},
_onHostHover: function(e){
console.debug('hover');
},
_onHostUnhover: function(e){
console.debug('unhover');
},
});
</script>
</dom-module>