聚合物,纸张按钮,发送参数在工作,但有时不

时间:2017-03-07 12:14:49

标签: firebase polymer web-component

我有几个像贝娄这样的按钮,所有包裹的dom-if模板如下所示。

<teplate is="dom-if" if="{{google}}">
   <paper-button on-tap='_signIn' arg="#google">...<div></div><paper-button>
</template>
.....
<paper-button on-tap='_signIn' arg="#facebook">...<div></div><paper-button>
<paper-button on-tap='_signIn' arg="#twitter">...<div></div><paper-button>

......
_signIn: function(e) {
 console.log(e.target.getAttribute("arg"));
 }

由于参数的价值,我需要使用自己的凭证登录/注册。 我随机点击这些按钮,结果有时是:null。控制台日志如下所示:

#google
#facebook
#google
null
null
null
#facebook
#facebook
#facebook
#twitter
null

因此需要稳定的结果。任何帮助或建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

点击div内的paper-button会显着导致null ..因为div没有arg属性,并且调用e.target会返回div。您应该显示没有任何子元素的纸质按钮,如:

<paper-button on-tap='_sigIn' arg="#google">Click me</paper-button>

或创建一个循环遍历父项的函数,直到找到给定的属性。为此我正在使用:

getAttr: function(e,attr) {
    elem = e.target;

    while (elem.parentNode != undefined) {
        if (elem.getAttribute(attr) != undefined) {
            return elem.getAttribute(attr);
        }
        elem = elem.parentNode;
    }
},

因此,您的函数_signIn可能如下所示:

_sigIn: function(e) {
   var value = this.getAttr(e, "arg");
   console.log(value);
}