我正在尝试在聚合物元素中使用ondblclick,但我无法使其工作。
我知道我可以使用ondblclick="someFunction()"
但我需要访问双击元素模型,例如on-tap事件:
event.target.templateInstance.model.myModel;
<script src="http://www.polymer-project.org/platform.js"></script>
<script src="http://www.polymer-project.org/polymer.js"></script>
<polymer-element name="dblclick-test">
<template>
<button on-dblclick="{{btnDblClick}}" on-tap="{{btnTap}}">{{btnText}}</button>
</template>
<script>
Polymer({
btnText: 'double click me',
btnDblClick: function(event) {
// in real code I need to use
// event.target.templateInstance.model
// just like on-tap's event param
this.btnText = 'Hi, u dbl clicked me !!!!!!';
},
btnTap: function(event) {
this.btnText = 'Hi, u clicked me !';
}
})
</script>
</polymer-element>
<dblclick-test></dblclick-test>
&#13;
是否有任何聚合方式可以做到这一点?
答案 0 :(得分:2)
<强>第一强>
我使用ondbleclick
代替on-dblclick
错过了declarative event mapping,感谢ebidel edit我的问题。
尽管上面的例子没有成功。
<强>第二强>
要解决on-tap
和on-dblclick
之间的冲突,我在代码中使用了以下内容:
<script src="http://www.polymer-project.org/platform.js"></script>
<script src="http://www.polymer-project.org/polymer.js"></script>
<polymer-element name="dblclick-test">
<template>
<button on-tap="{{btnTap}}">{{btnText}}</button>
</template>
<script>
Polymer({
btnText: 'double click me',
btnDblClick: function(event) {
this.btnText = 'Hi, u dbl clicked me !!!!!!';
},
btnTap: function(event) {
if (this.tappedOneTime) {
this.btnDblClick();
this.tappedOneTime = false;
} else {
this.btnText = 'Hi, u clicked me !';
}
this.tappedOneTime = true;
// reset flag after 800ms
this.async(function() {
this.tappedOneTime = false;
}, null, 800);
}
})
</script>
</polymer-element>
<dblclick-test></dblclick-test>
&#13;
答案 1 :(得分:0)
我认为tap
也会因dblclick
而被解雇。
我(和其他答案)这个问题Distinguish between onClick and onDoubleClick on same element to perform different actions in Dart显示了可能的解决方案。
答案 2 :(得分:0)
不要同时使用on-tap和on-dblclick,如果你需要两种行为都使用on-click而不是on-tap。
<my-elem on-click="clicked" on-dblclick="dblclicked">