动态下拉列表推送到 polymer 中的 firebase DB 的价值
Value of dynamic dropdown to push to firebase DB in polymer
我需要获取动态下拉列表的值。我所有其他领域都使用 .value 和所有工作。当我尝试获取下拉列表的值时,控制台日志中出现错误...“无法读取未定义的 属性 'value'”。
我的 HTML 看起来像这样....
div class="">
<paper-input id="pxName" label="Patient Name"></paper-input>
<paper-input id="pxAptTime" label="Appointment Time"></paper-input>
<paper-input id="pxLocation" label="Location"></paper-input>
<paper-dropdown-menu label="Doctors">
<paper-listbox slot="dropdown-content" class="dropdown-content">
<template is="dom-repeat" items="[[doctors]]" as="dr">
<paper-item id="pxProvider">[[dr.name]]</paper-item>
</template>
</paper-listbox>
</paper-dropdown-menu>
<div id="px-input">
<paper-button raised id="addPatient" on-tap="addPatient">Add Patient</paper-button>
</div>
</div>
我发布的函数看起来像这样....
addPatient: function () {
// console.log(this.$.pxProvider.value);
this.$.patients.ref.push({
name: this.$.pxName.value,
aptTime: this.$.pxAptTime.value,
location: this.$.pxLocation.value,
provider: this.$.pxProvider.value
})
非常感谢任何帮助。
我相信你在一个新的范围内。
这意味着您不能在推送中使用 "this"。
addPatient: function () {
var me = this;
this.$.patients.ref.push({
name: me.$.pxName.value,
aptTime: me.$.pxAptTime.value,
location: me.$.pxLocation.value,
provider: me.$.pxProvider.value
})
}
另一种解决方案,可能更简洁一些:
addPatient: function () {
this.$.patients.ref.push({
name: this.$.pxName.value,
aptTime: this.$.pxAptTime.value,
location: this.$.pxLocation.value,
provider: this.$.pxProvider.value
}.bind(this));
}
我已通过将 'id' 的位置从 paper-item 移动到 paper-dropdown-menu 解决了这个问题。这会捕获值并立即正确发布到数据库。
<paper-dropdown-menu id="pxProvider" label="Doctors">
<paper-listbox slot="dropdown-content" class="dropdown-content">
<template is="dom-repeat" items="[[doctors]]" as="dr">
<paper-item >[[dr.name]]</paper-item>
</template>
</paper-listbox>
</paper-dropdown-menu>
我需要获取动态下拉列表的值。我所有其他领域都使用 .value 和所有工作。当我尝试获取下拉列表的值时,控制台日志中出现错误...“无法读取未定义的 属性 'value'”。
我的 HTML 看起来像这样....
div class="">
<paper-input id="pxName" label="Patient Name"></paper-input>
<paper-input id="pxAptTime" label="Appointment Time"></paper-input>
<paper-input id="pxLocation" label="Location"></paper-input>
<paper-dropdown-menu label="Doctors">
<paper-listbox slot="dropdown-content" class="dropdown-content">
<template is="dom-repeat" items="[[doctors]]" as="dr">
<paper-item id="pxProvider">[[dr.name]]</paper-item>
</template>
</paper-listbox>
</paper-dropdown-menu>
<div id="px-input">
<paper-button raised id="addPatient" on-tap="addPatient">Add Patient</paper-button>
</div>
</div>
我发布的函数看起来像这样....
addPatient: function () {
// console.log(this.$.pxProvider.value);
this.$.patients.ref.push({
name: this.$.pxName.value,
aptTime: this.$.pxAptTime.value,
location: this.$.pxLocation.value,
provider: this.$.pxProvider.value
})
非常感谢任何帮助。
我相信你在一个新的范围内。
这意味着您不能在推送中使用 "this"。
addPatient: function () {
var me = this;
this.$.patients.ref.push({
name: me.$.pxName.value,
aptTime: me.$.pxAptTime.value,
location: me.$.pxLocation.value,
provider: me.$.pxProvider.value
})
}
另一种解决方案,可能更简洁一些:
addPatient: function () {
this.$.patients.ref.push({
name: this.$.pxName.value,
aptTime: this.$.pxAptTime.value,
location: this.$.pxLocation.value,
provider: this.$.pxProvider.value
}.bind(this));
}
我已通过将 'id' 的位置从 paper-item 移动到 paper-dropdown-menu 解决了这个问题。这会捕获值并立即正确发布到数据库。
<paper-dropdown-menu id="pxProvider" label="Doctors">
<paper-listbox slot="dropdown-content" class="dropdown-content">
<template is="dom-repeat" items="[[doctors]]" as="dr">
<paper-item >[[dr.name]]</paper-item>
</template>
</paper-listbox>
</paper-dropdown-menu>