2014-10-16 92 views
1

我想在聚合物元素內使用ondblclick,但是我無法使它工作。聚合物ondblclick不起作用

我知道我可以只使用ondblclick="someFunction()"但我需要訪問雙次點擊元模型,像上敲擊事件:

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>

有任何聚合方式去做吧?

回答

2

首先

我用ondbleclick代替on-dblclick缺少declarative event mapping,感謝ebidel edit我的問題。

即使上述示例不起作用。

爲了解決on-tapon-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>

0

我假設tap也被開除了dblclick這使得它很難。 我的(和其他答案)Distinguish between onClick and onDoubleClick on same element to perform different actions in Dart顯示了可能的解決方案。

+0

問題是'上dblclick'永遠不會被調用,您可以運行上面的代碼段... – 2014-10-16 15:57:27

+0

你試過沒有'上tap'處理? – 2014-10-16 15:58:01

+1

你是對的,沒有'on-tap'處理''on-dblclick'工作。 – 2014-10-16 16:01:10

0

不要抽頭使用和on-dblclick在一起,如果你需要兩種行爲都使用on-click而不是on-tap。

<my-elem on-click="clicked" on-dblclick="dblclicked">