2017-03-07 40 views
0

我有几个按钮,像波纹管,所有包装dom-if模板一样。聚合物,纸张按钮,发送参数on-tap作品,但有时不是

<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

点击里面paper-buttondiv将导致空明显..因为div有没有arg属性和调用e.target回报div。你应该没有任何子元素,如显示纸按钮:

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

或作出将循环throught父母的功能,直到它找到给定的属性。对于此,我使用:

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); 
} 
+0

非常感谢您@KubaŠimonovský,第二选择是对我来说更好,效果很好。真的非常有帮助。 :) – HakanC