聚合物1。*
有没有办法在纸张下拉列表中使用纸质项目中的文本以外的值?例如,在提交表单时,我希望50
代替$50 dollars
。我尝试放置value='50'
,但表单仍然使用了文字$50 dollars
。
<paper-dropdown-menu label="minimumPrice" name="minimumPrice">
<paper-listbox class="dropdown-content" selected="0">
<paper-item>No min</paper-item>
<paper-item>$50 dollars</paper-item>
答案 0 :(得分:1)
您可以在label
中添加paper-item
属性以获得所需的结果。
<paper-dropdown-menu label="minimumPrice" name="minimumPrice">
<paper-listbox id="test" slot="dropdown-content" class="dropdown-content" selected="0">
<paper-item label="0">No min</paper-item>
<paper-item label="50">$50 dollars</paper-item>
</paper-listbox>
</paper-dropdown-menu>
value
中的paper-dropdown-menu
属性始终与selectedItemLabel
具有相同的值,selectedItemLabel
包含从当前"label"
派生的值选中的项目(如果已设置),或者所选项目的修剪文本内容。
<强>更新强>
另一种方式:
创建隐藏的input
并将所选值分配给隐藏的input
值。
<paper-dropdown-menu label="minimumPrice" >
<paper-listbox slot="dropdown-content" class="dropdown-content" selected="{{selected}}" attr-for-selected="value">
<paper-item value="0">No min</paper-item>
<paper-item value="50">$50 dollars</paper-item>
</paper-listbox>
</paper-dropdown-menu>
<input is="iron-input" name="minimumPrice" id="hiddenSelected" type="hidden" value="[[selected]]">
如果您希望默认选择第一个内容,则可以在ready
函数内分配:
ready: function(){
this.selected = 0;
}
答案 1 :(得分:1)
可能没有正式的方法可以做到这一点,但你仍然可以在技术上完成你的目标(有点黑客)。
<paper-dropdown-menu>
在其selectedItem
上有一个观察者,它将其值和标签设置为the same value(从所选项目派生);并且selectedItem
由<paper-dropdown-menu>
&#39; s event listener on iron-select
设置,因此您可以添加自己的侦听器来覆盖标签。
以下是步骤:
在每个<paper-item>
的{{1}}属性中指定所需的项目值。请注意label
将其值设置为所选项目的<paper-dropdown-menu>
,但label
的文本内容仍显示在打开的下拉菜单中(即列表框)。
<paper-item>
从<paper-item label="0">No min</paper-item>
<paper-item label="50">$50 dollars</paper-item>
添加iron-select
事件的侦听器,以覆盖所选项目的显示标签。
<paper-dropdown-menu>
ready: function() {
// <paper-dropdown-menu id="menu">
this.$.menu.addEventListener('iron-select', (e) => {
const paperItem = e.detail.item;
this.$.menu._setSelectedItemLabel(paperItem.textContent.trim());
});
}
&#13;
HTMLImports.whenReady(() => {
Polymer({
is: 'x-foo',
_onResponse: function(e) {
const resp = e.detail.response;
this.response = JSON.stringify(resp, null, 2);
},
ready: function() {
this.$.menu.addEventListener('iron-select', (e) => {
const paperItem = e.detail.item;
this.$.menu._setSelectedItemLabel(paperItem.textContent.trim());
});
}
});
});
&#13;
答案 2 :(得分:0)
尝试
<paper-item value="50" selected>$50 dollars</paper-item>
这将选择50美元作为默认值,并应获取值