我正在Meteor中定义执行自定义fire
的Polymer组件:
<polymer-element name="tm-card">
<template>
... content ...
<paper-button data-rating="good" on-tap="{{rated}}" flex raised> Good! </paper-button>
<paper-button data-rating="easy" on-tap="{{rated}}" flex> Easy! </paper-button>
</template>
<script>
Polymer({
rated: function (event, detail, sender) {
var rating = sender.dataset.rating;
this.fire('rated', {rating: rating});
}
});
</script>
</polymer-element>
这似乎很好用,我可以在流星上捕捉到该事件:
<template name='reviewItem'>
<tm-card>
<p class="question">{{question}}</p>
<p class="answer">{{answer}}</p>
</tm-card>
</template>
Template.reviewItem.events
'rated': (evt, tmpl) ->
console.log 'item rated'
console.log evt.detail # undefined
console.log evt.originalEvent.detail # {rating: "easy"}
但是您可以看到事件详细信息丢失了(在“外部”事件中)。外层事件是jQuery.event
,原始事件是Polymer触发的CustomEvent
。
jQuery docs状态:
“以下属性也被复制到事件对象,尽管根据事件的不同,它们的某些值可能是不确定的:
...详细,...“
但是文档并未说明如何处理自定义事件类型。
jQuery.event
中?