如何从回调访问Polymer自定义元素

彼德

我需要访问自定义元素,并从click事件回调中调用其方法。

<polymer-element name="my-element">
    <template>
        <style type="text/css" media="screen">
            ...
        </style>
        <ul id="my_data"></ul>
    </template>

    <script>
        Polymer('my-element', {
            dataSelected: function(selectedText) {
                //...
            },

            setData: function(data) {
                for (var i = 0; i < data.length; i++) {
                    var li = document.createElement('li');
                    li.addEventListener('click', function(e) {
                        // how can I call dataSelected() from here?
                    });
                    li.innerText = data[i];
                    this.$.my_data.appendChild(li);
                }
            }
        });
    </script>
</polymer-element>

如何dataSelected()从回调中调用自定义元素的方法?

斯科特·迈尔斯(Scott Miles)

您可以bind用来将this上下文附加到任何函数,因此:

   li.addEventListener('click', function(e) {
      this.dataSelected(e.target.innerText);
    }.bind(this));

http://jsbin.com/xorex/4/edit

但是,通过使用更多的聚合物加糖剂,您可以使事情变得更容易。例如,您可以发布数据并使用观察系统,如下所示:

<polymer-element name="my-element" attributes="data">
...
    data: [], // type hint that data is an array
...
    dataChanged: function() { // formerly setData

http://jsbin.com/xorex/5/edit

另外,您可以使用内置事件系统来代替 addEventListener

<polymer-element name="my-element" attributes="data">
  ...
  <ul id="my_data" on-tap="{{dataTap}}"></ul>
  ...
    dataTap: function(e) { // `tap` supports touch and mouse
      if (e.target.localName === 'li') {
        this.dataSelected(e.target.textContent);
      }
    }

http://jsbin.com/xorex/6/edit

但是最大的胜利是使用<template repeat>而不是在JavaScript中创建元素。在这一点上,complete元素可以如下所示:

<polymer-element name="my-element" attributes="data">
<template>

  <ul id="my_data">
    <template repeat="{{item in data}}">
      <li on-tap="{{dataTap}}">{{item}}</li>
    </template>
  </ul>

</template>
<script>

  Polymer('my-element', {
    data: [],

    dataTap: function(e) {
      console.log('dataSelected: ' + e.target.textContent);
    }
  });

</script>
</polymer-element>

http://jsbin.com/xorex/7/edit

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从回调访问Polymer自定义元素

来自分类Dev

如何从Polymer模板中访问自定义元素的主体?

来自分类Dev

如何访问通过Polymer定义的自定义元素的内部元素

来自分类Dev

如何隐藏自定义的Polymer元素?

来自分类Dev

如何隐藏自定义的Polymer元素?

来自分类Dev

自定义元素内的 Google Auth 回调

来自分类Dev

访问嵌套的Polymer自定义元素中的JavaScript方法

来自分类Dev

如何访问自定义元素的主机

来自分类Dev

如何访问自定义元素的主机

来自分类Dev

如何创建执行回调的树枝自定义标签?

来自分类Dev

CakePHP 3:如何创建自定义模型回调?

来自分类Dev

如何传递Polymer Object beetwen 2自定义元素

来自分类Dev

自定义代表回调

来自分类Dev

JavaScript:自定义回调函数

来自分类Dev

Nightwatch自定义命令回调

来自分类Dev

提供自定义组件的回调

来自分类Dev

Javascript 自定义回调函数

来自分类Dev

无法使用Javascript访问Polymer自定义元素中的Canvas元素

来自分类Dev

无法使用Javascript访问Polymer自定义元素中的Canvas元素

来自分类Dev

在构造函数中定义自定义元素的生命周期回调

来自分类Dev

Polymer:如何显示在自定义/核心元素定义中未清除的DOM元素?

来自分类Dev

元素事件侦听器回调不适用于自定义事件

来自分类Dev

元素事件侦听器回调不适用于自定义事件

来自分类Dev

如何访问Knockout组件中的自定义元素?

来自分类Dev

如何访问自定义单元元素

来自分类Dev

如何访问插槽内的自定义元素的 light dom?

来自分类Dev

在ruby方法上定义自定义回调

来自分类Dev

在ruby方法上定义自定义回调

来自分类Dev

自定义元素*及其子元素*初始化后如何获取回调

Related 相关文章

热门标签

归档