如何在Polymer.js中隐藏下拉列表?hidden属性失效问题求助
可能的原因及修复方案
1. 绑定语法错误
你的代码里用了${(this._channelFilterVisibility)},如果是Lit框架,正确的属性绑定应该去掉多余括号,直接写:
<paper-dropdown-menu id="firmChannelFilter" hidden=${this._channelFilterVisibility} class="small-padding" label="Channel Filter"> <paper-listbox slot="dropdown-content" hidden=${this._channelFilterVisibility} id="firmChannel"> <!-- 列表项内容 --> </paper-listbox> </paper-dropdown-menu>
如果是Polymer框架,需使用双括号绑定语法:
<paper-dropdown-menu id="firmChannelFilter" hidden$="[[_channelFilterVisibility]]" class="small-padding" label="Channel Filter"> <paper-listbox slot="dropdown-content" hidden$="[[_channelFilterVisibility]]" id="firmChannel"> <!-- 列表项内容 --> </paper-listbox> </paper-dropdown-menu>
2. 组件内部样式覆盖hidden属性
部分自定义元素(比如paper-dropdown-menu)可能通过内部CSS强制显示,导致原生hidden属性失效。这种情况下可以用自定义CSS类控制隐藏:
先定义CSS类:
.hidden-element { display: none !important; }
再绑定类到元素:
<!-- Lit语法 --> <paper-dropdown-menu id="firmChannelFilter" class=${this._channelFilterVisibility ? 'small-padding hidden-element' : 'small-padding'} label="Channel Filter"> <paper-listbox slot="dropdown-content" class=${this._channelFilterVisibility ? 'hidden-element' : ''} id="firmChannel"> <!-- 列表项内容 --> </paper-listbox> </paper-dropdown-menu> <!-- Polymer语法 --> <paper-dropdown-menu id="firmChannelFilter" class$="small-padding [[_channelFilterVisibility ? 'hidden-element' : '']]" label="Channel Filter"> <paper-listbox slot="dropdown-content" class$="[[_channelFilterVisibility ? 'hidden-element' : '']]" id="firmChannel"> <!-- 列表项内容 --> </paper-listbox> </paper-dropdown-menu>
3. 检查变量类型是否正确
确保_channelFilterVisibility是布尔类型的true(需要隐藏时),如果是字符串类型的"true",hidden属性可能无法正确生效。可以在代码中打印该变量的值,确认类型和预期一致。
内容的提问来源于stack exchange,提问作者Satyam Kumar
相关产品推荐
相关产品推荐

