我试图在我的元素中使用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。
答案 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}}有价值。