Polymer,如何将值传递给需要字符串的 paper-date-picker 属性?
Polymer, how to pass value to paper-date-picker attribute that expects string?
我正在尝试在我的元素中使用 paper-date-picker。
如何将值传递给 paper-date-picker 的 'date' 属性?
<!-- 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.
查看日期选择器的源代码后,发现它不能很好地处理文本。基本上,您必须添加一个将值转换为日期的观察者。此外,从选择器中删除生日。这是一个简单的例子...
<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>
请记住,我不是在检查新值时出错...您必须这样做。
属性中的值始终是字符串。如果你想让 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
不支持从 birthdate
中的 String
值生成 Date
。因此,当直接使用 paper-date-picker
(而不是通过属性)时,birthdate
必须具有 Date
值。
我正在尝试在我的元素中使用 paper-date-picker。 如何将值传递给 paper-date-picker 的 'date' 属性?
<!-- 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.
查看日期选择器的源代码后,发现它不能很好地处理文本。基本上,您必须添加一个将值转换为日期的观察者。此外,从选择器中删除生日。这是一个简单的例子...
<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>
请记住,我不是在检查新值时出错...您必须这样做。
属性中的值始终是字符串。如果你想让 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
不支持从 birthdate
中的 String
值生成 Date
。因此,当直接使用 paper-date-picker
(而不是通过属性)时,birthdate
必须具有 Date
值。