我不知道如何在 paper-input-decorator 元素上使用 updateLabelVisiblity()函数。这应该有效,但事实并非如此!
在我的plunker中,正常的输入值连接到纸张输入值。每当我在正常输入中键入内容时,都会调用一个函数。该函数调用 validate()和 updateLabelVisiblity 。
Here is a plunker这是我的Polymer-element。
<polymer-element name='my-input'>
<template>
<h3>Paper input (linked)</h3>
<paper-input-decorator id='myPaperInput' label='Field' error='error' floatingLabel autovalidate>
<input is='core-input' pattern='^[0-9]*$' value='{{something}}'>
</paper-input-decorator>
<h3>Normal input (linked)</h3>
<input value='{{something}}' on-keyup='{{mykeyup}}'>
<p>
Why doesn't the label show above the paper-input when i start typing in the <b>Normal Input</b>?
</p>
</template>
<script>
Polymer({
mykeyup: function(){
this.$.myPaperInput.validate();
this.$.myPaperInput.updateLabelVisibility();
}
});
</script>
</polymer-element>
解决
mykeyup: function(){
var p = this.$.myPaperInput;
p.validate();
p._autoLabelVisible = p.querySelector('input').value !== '' ? false : true;
}
答案 0 :(得分:1)
我看到发生了什么。 updateLabelVisibility需要该值才能显示浮动标签。但是,使用updateLabelVisibility,您也可以执行此操作:
this.$.myPaperInput._autoLabelVisible = false;
这基本上只是硬设置updateLabelVisibility正在设置的值。
这是您的代码,刚刚更新:
http://plnkr.co/edit/l4xQBv7PKft2zqARnPu1?p=preview
参考: https://github.com/Polymer/paper-input/blob/master/paper-input-decorator.html#L474