Polymer ondblclick无效

时间:2014-10-16 13:40:00

标签: polymer

我正在尝试在聚合物元素中使用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;
&#13;
&#13;

是否有任何聚合方式可以做到这一点?

3 个答案:

答案 0 :(得分:2)

<强>第一

我使用ondbleclick代替on-dblclick错过了declarative event mapping,感谢ebidel edit我的问题。

尽管上面的例子没有成功。

<强>第二

要解决on-tapon-dblclick之间的冲突,我在代码中使用了以下内容:

&#13;
&#13;
<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;
&#13;
&#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">