Javascript 聚合物下拉列表问题
我很难用Polymer 0.5实现简单的下拉列表 我也在从Polymer.5并行迁移到1.0。但这是单独的讨论( ) 下面是我用来定义体内聚合物元素的代码:Javascript 聚合物下拉列表问题,javascript,html,polymer,web-component,Javascript,Html,Polymer,Web Component,我很难用Polymer 0.5实现简单的下拉列表 我也在从Polymer.5并行迁移到1.0。但这是单独的讨论( ) 下面是我用来定义体内聚合物元素的代码: <polymer-element name="x-trigger" extends="paper-icon-button" relative="" on-tap="{{toggle}}" noink=""> <template> <shadow></shadow> <co
<polymer-element name="x-trigger" extends="paper-icon-button" relative="" on-tap="{{toggle}}" noink="">
<template>
<shadow></shadow>
<content></content>
</template>
</polymer-element>
我在身体下面使用元素,如下所示:
<x-trigger icon="menu" relative="" noink="" role="button" tabindex="0" aria-label="menu">
<paper-dropdown tabindex="-1" class="core-transition" style="outline: none; display: none;">
halign = left
<br>
valign = top
</paper-dropdown>
</x-trigger>
halign=左
valign=顶部
我在页面的标题部分定义了以下脚本部分:
<script>
Polymer('x-trigger', {
toggle: function () {
if (!this.dropdown) {
this.dropdown = this.querySelector('paper-dropdown');
}
this.dropdown && this.dropdown.toggle();
}
});
</script>
聚合物(“x触发器”{
切换:函数(){
如果(!this.dropdown){
this.dropdown=this.querySelector(“纸面下拉菜单”);
}
this.dropdown&&this.dropdown.toggle();
}
});
问题是,我确实在页面中看到了图标按钮,但当我点击该按钮时,什么也没发生
进一步调试显示,
这是否意味着我必须升级到polymer v1才能解决此问题,或者polymer 0.5是否有任何解决方法?polymer 0.5和1.0之间的差异非常大。您引用的/deep/选择器是我在迁移时面临的一个大问题 我最近将一个项目从0.5迁移到1.0,为此,我必须将/deep/的所有实例都更改为新的符号 我的建议是首先从0.5迁移到1.0,然后使用新的Polymer文档来提出解决方案 在该项目中,我实现了一个简单的下拉列表。以下是我的方法:
<dom-module id="profile-edit-page">
<style>
// Styling
</style>
<template>
<div class="container-app">
<div class="container-inner">
<!-- Other form elements -->
<input is="iron-input" id="filterInput" type="text" required placeholder="Automotive assistant" label="Occupation" bind-value="{{order.occupation}}" on-focus="startPickingOccupation" on-keydown="updateFilter" on-blur="stopPickingOccupation" class="block field input-reg mb2"></input>
<div class$="[[pickingOccupationClass(pickingOccupation)]]">
<paper-menu >
<template id="occupationRepeat" is="dom-repeat" items="[[occupations]]" filter="isShown">
<paper-item class="option" on-click="pickOccupation">[[item]]</paper-item>
</template>
</paper-menu>
</div>
<button class$="inputClass" class="btn btn-primary btn-block" on-click="forward" value="{{order.registration}}">Continue</button>
</div>
</div>
</template>
</dom-module>
<script>
Polymer({
properties: {
order: Object,
pickingOccupation: {
type: Boolean,
value: false
},
occupationFilter: {
type: String,
value: ""
},
occupations: {
type: Array,
value: ["Abattoir Worker",
"Accommodation Officer",
"Accountant",
// Etc.
"Zoology Consultant"]
}
},
is: "profile-edit-page",
pickOccupation: function(e) {
this.set('order.occupation', e.model.item);
this.set('pickingOccupation', false);
},
startPickingOccupation: function() {
this.pickingOccupation = true;
},
stopPickingOccupation: function() {
this.async(function() {
this.pickingOccupation = false;
},500);
},
updateFilter: function() {
if(typeof(this.$.occupationRepeat) === "undefined") {
return;
}
this.set('occupationFilter', this.$.filterInput.value.toLowerCase());
this.async(function() {
this.$.occupationRepeat.render();
},50);
},
isShown: function(item) {
if(this.order.occupation == '') {
return false;
}
return (item.toLowerCase().search(this.occupationFilter) !== -1);
},
pickingOccupationClass: function(picking) {
if(this.pickingOccupation) {
return "picking";
} else {
return "hidden";
}
}
});
</script>
//造型
[[项目]]
继续
聚合物({
特性:{
顺序:反对,
挑选职业:{
类型:布尔型,
值:false
},
职业筛选:{
类型:字符串,
值:“”
},
职业:{
类型:数组,
值:[“屠宰场工人”,
“住宿主任”,
“会计师”,
//等等。
“动物学顾问”]
}
},
是:“个人资料编辑页面”,
职业:功能(e){
此.set('order.occulation',e.model.item);
此.set('pickingOccupation',false);
},
startPickingOccupation:函数(){
this.pickingOccupation=true;
},
stopPickingOccupation:函数(){
this.async(函数(){
this.pickingOccupation=false;
},500);
},
updateFilter:函数(){
if(typeof(this.$.occulationrepeat)=“未定义”){
返回;
}
this.set('occupationFilter',this.$.filterInput.value.toLowerCase());
this.async(函数(){
此.$.occupationRepeat.render();
},50);
},
显示:功能(项目){
如果(this.order.occulation==“”){
返回false;
}
return(item.toLowerCase().search(this.occulationFilter)!=-1);
},
PickingOccurationClass:函数(拾取){
如果(这是挑选职业){
返回“拾取”;
}否则{
返回“隐藏”;
}
}
});
将脚本
移动到实际的聚合物元件中
:
<polymer-element name="x-trigger" extends="paper-icon-button" relative="" on-tap="{{toggle}}" noink="">
<template>
<shadow></shadow>
<content></content>
</template>
<script>
Polymer('x-trigger', {
toggle: function () {
if (!this.dropdown) {
this.dropdown = this. querySelector('paper-dropdown');
}
this.dropdown && this.dropdown.toggle();
}
});
</script>
</polymer-element>
聚合物(“x触发器”{
切换:函数(){
如果(!this.dropdown){
this.dropdown=this.querySelector(“纸面下拉菜单”);
}
this.dropdown&&this.dropdown.toggle();
}
});
在调试过程中,当断点到达时,它就会工作。我没有考虑他们的某些竞争条件吗?