聚合物,如何将值传递给期望字符串的paper-date-picker属性?

时间:2015-02-04 15:25:00

标签: polymer

我试图在我的元素中使用paper-date-picker。 如何将价值传递给纸质日期选择器的日期'属性?

<!-- This is working: -->
<paper-date-picker date="2000/1/21"></paper-date-picker>


 <!-- This is NOT working: 
 Inside <my-birthdate birthdate="1977/1/2"></my-birthdate> -->
<paper-date-picker date='{{birthdate}}'></paper-date-picker>

这是Plunk

2 个答案:

答案 0 :(得分:2)

查看日期选择器的来源后,它不能很好地处理文本。基本上,您必须添加一个将值转换为日期的观察者。另外,从拾取器中移除生日。这是一个简单的例子......

<polymer-element name="my-birthdate" attributes="birthdate">
    <template>
        birthdate = {{birthdate}}
        <paper-date-picker id="picker"></paper-date-picker>
    </template>
    <script>
        Polymer("my-birthdate", {
            birthdateChanged: function (oldValue, newValue) {
                if (newValue)
                    this.$.picker.date = new Date(newValue);
            }
        });
    </script>
</polymer-element>

请记住,我没有错误检查新值...您必须这样做。

答案 1 :(得分:2)

属性中的值始终是字符串。如果您希望Polymer将属性字符串转换为其他类型,则必须提示您想要的类型。

<my-birthdate birthdate="1977/1/2"></my-birthdate>

我们希望birthdate成为Date。如果我们改变定义如下:

<script>
  Polymer({
    birthdate: new Date()
  });
</script>

然后Polymer知道将1977/1/2转换为Date对象。

http://plnkr.co/edit/ftbtl0eCrklAuIbxKRiP?p=preview

请记住,此处的绑定与上述不同:

<paper-date-picker date='{{birthdate}}'></paper-date-picker>

在这种情况下,我们要求Polymer将paper-date-picker.date 属性直接绑定到birthdate 属性。我们不通过属性,因为那时我们必须转换为字符串并返回它,它会显着变慢。

paper-date-picker中,Date无法支持String中的birthdate paper-date-picker。因此,在直接使用birthdate时(不是通过属性),Date必须{{1}}有价值。