如何在聚合物中的内容元素上设置点击事件监听器?

时间:2015-04-04 19:28:09

标签: polymer

我使用聚合物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>

这不可能吗?

2 个答案:

答案 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>