聚合物Javascript。当点击事件时,不能将数据传递给其他聚合物元素而不调用聚合物元素

时间:2017-05-19 08:21:18

标签: javascript listbox polymer

我有两个聚合物元素:<element-a> <element-b>它们都是父<element-c>内的子元素,并且每个都在不同的文件中。

<element-a>中,我有一个<paper-listbox>,里面有一些<paper-item>,其中有点击事件以获取它的值。

我的目标是:在<element-b>方面,我想通过API来获取这样的网址:

API / CONFIGS / {{tempId}}

并在<p>点击事件<element-b>时触发<paper-listbox> <element-a>。 {{tempId}}是来自<paper-listbox>方的所选<element-a>的值。

我已经获得了所选的<paper-listbox>值,我尝试将其打印在控制台上,但不知道如何在不调用元素的情况下将其传递给<element-b>。已经尝试过某种方式,比如使用会话存储为{{tempId}}设置一个临时值,但不知道什么时候在<element-b>方面调用它。尝试从准备好的功能中调用它:功能&#39;,我知道并没有工作。我只是试着确保它。

下面是一些插图的代码

// element-a.html
    ...
    <paper-listbox selected="0">
        <template is="dom-repeat" items="{{response.data}}">
          <paper-item value="{{item.id}}" on-tap="_getId">
            Configuration ID {{item.id}}
          </paper-item>
        </template>
      </paper-listbox>

<script>
...
_getId: function(e) {
  var tempId = e.path[0].value;
  console.log(e.path[0].value);
}
...
</script>

然后

//element-b.html
<iron-ajax
  ...
  url="api/configs/{{tempId}}"
  ...
  >

非常感谢您的任何帮助。感谢。

1 个答案:

答案 0 :(得分:1)

如果属性在父元素中,那么您可以在子元素中使用它,如

<element-b temp-id=[[tempId]]></element-b>

但在你的情况下,你可以在你的父元素中有一个监听器

listeners: {
 'on-tap-listener': '_abc'
}

并在<element-a>中像这样点击事件

_getId: function(e) {
  var tempId = e.path[0].value;
  console.log(e.path[0].value);
  this.fire('on-tap-listener',tempId);
}

现在,您在父元素中拥有tempId并将其分配给属性并将其绑定到element-b,如上所示

_abc:function(data){
   this.tempId = data.detail.tempId;
},