我使用聚合物0.8,据我所知有一个新的API,但我无法在任何地方找到这个问题的参考。我试图做到这一点:
<center-focusable>
<template is="x-autobind">
<span on-click="setFocus">test?</span>
</template>
</center-focusable>
出了哪些错误:
[span]。[click]:事件处理程序[setFocus]在scope()
中为null
我的元素定义如下:
<dom-module id="center-focusable">
<template>
<span on-click="setFocus">I work</span>
<content></content>
</template>
</dom-module>
<script>
Polymer({
is: "center-focusable",
setFocus: function () {
console.log("test");
}
});
</script>
这不可能吗?
答案 0 :(得分:1)
我最终做的是定义另一个自定义元素来触发自定义事件。
<dom-module id="focusable-element">
<content></content>
</dom-module>
<script>
Polymer({
is: "focusable-element",
listeners: {
'click': 'setFocus'
},
setFocus: function () {
this.fire("center-focusable:center");
}
});
</script>
然后我会抓住它:
<script>
Polymer({
is: "center-focusable",
listeners: {
'center-focusable:center': 'setFocus'
},
setFocus: function (e) {
e.stopPropagation();
console.log("test");
}
});
</script>
合:
<center-focusable>
<focusable-element>
This works.
</focusable-element>
</center-focusable>
虽然看起来像是不必要的努力来处理这种方式。
答案 1 :(得分:-1)
<span>
是一个常规HTML元素,而不是聚合物元素。
点击是一种聚合物语法。
我认为你应该使用常规的html事件:onclick(没有破折号)。
例如:<span onclick="console.log('test')">I work</span>