动态下拉列表推送到 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>