Polymer paper-input-decorator updateLabelVisibility()不起作用

时间:2015-03-10 11:24:47

标签: polymer

我不知道如何在 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;
}

1 个答案:

答案 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