Javascript 聚合物-根据选定的熨斗页面更改纸张工具栏内容
在Polymer Starter Kit上展开,我正在努力找出如何在不同的Javascript 聚合物-根据选定的熨斗页面更改纸张工具栏内容,javascript,polymer,polymer-1.0,polymer-starter-kit,Javascript,Polymer,Polymer 1.0,Polymer Starter Kit,在Polymer Starter Kit上展开,我正在努力找出如何在不同的熨斗页面处于活动状态时将汉堡(菜单)图标更改为不同的按钮 index.html <paper-toolbar class="paper-toolbar-0" id="mainToolbar"> <paper-icon-button id="paperToggle" icon="menu" paper-drawer-toggle></paper-icon-button> <
熨斗页面
处于活动状态时将汉堡(菜单
)图标更改为不同的按钮
index.html
<paper-toolbar class="paper-toolbar-0" id="mainToolbar">
<paper-icon-button id="paperToggle" icon="menu" paper-drawer-toggle></paper-icon-button>
<!-- more toolbar content here -->
</paper-toolbar>
<iron-pages attr-for-selected="data-route" class="layout vertical center" selected="{{route}}">
<!-- Top Stories -->
<section data-route="topstories">
<story-list id="story-list" class="layout vertical center-justified"></story-list>
</section>
<!-- Item Info -->
<section data-route="item-info" class="fullbleed layout center-justified">
<item-info firebase-item-id="[[params.firebaseitemid]]" class="fullbleed flex"></item-info>
</section>
</iron-pages>
当选择了
项目信息
路线时,我想将菜单
纸张切换按钮
替换为后退
按钮。可能会将工具栏文本从应用程序标题更改为“返回顶部故事”,例如
现在,我认为可以通过在每个控件上设置
id
,然后在item info
元素中使用一些Javascript来进行这些更改。我更喜欢模块化一点的东西,因为这会将我的项目信息
元素与它外部的内容紧密地联系在一起 我假设您的纸质工具栏
和铁皮页
都位于同一个模板中,以便两者都可以评估路由
属性。你可以很容易地使用或切换。我做了一个自定义的聚合元素,你可以将一组图标传递给它,并将它们放在工具栏上
下面是代码:<dom-module id="my-toolbar-icons">
<template>
<template is="dom-repeat" items="{{contextualButtons}}" as="button" id="buttonsRepeat">
<paper-icon-button contextual-action="{{button.action}}" icon="{{button.icon}}" on-tap="onContextualButtonTap"></paper-icon-button>
</template>
</template>
<script>
Polymer({
is: 'my-toolbar-icons',
properties: {
contextualButtons: {
type: Array,
value: function () {
return [];
}
}
},
ready: function(){
//set data just to show an icon
this.contextualButtons = [{ icon: 'social:person-add', action: 'new' }, { icon: 'delete', action: 'delete' }, { icon: 'cloud-upload', action: 'update' }, { icon: 'image:camera-alt', action: 'takephoto' }, { icon: 'search', action: 'search' }];
},
setData: function (newContextualButtons) {
//set data to the array (usage)
//var item = document.querySelector("#id-of-this-element")
//item.setData(someArrayOfIcons)
this.contextualButtons = newContextualButtons;
},
onContextualButtonTap: function (event) {
var item = this.$.buttonsRepeat.itemForElement(event.target);
this.fire('customize-listener', item.action);
}
});
</script>
</dom-module>
<!--Usage-->
<my-toolbar-icons id="my-toolbar-icons"></my-toolbar-icons> <!--declaration-->
<!--with javascript-->
this.toolbar= document.querySelector("#my-toolbar-icons");
this.toolbar.setData([{ icon: 'social:person-add', action: 'new' }]);
聚合物({
是:‘我的工具栏图标’,
特性:{
上下文按钮:{
类型:数组,
值:函数(){
返回[];
}
}
},
就绪:函数(){
//将数据设置为仅显示图标
this.contextualButtons=[{icon:'social:person add',action:'new'},{icon:'delete',action:'delete'},{icon:'cloud upload',action:'update'},{icon:'image:camera alt',action:'takephoto'},{icon:'search',action:'search'}];
},
setData:函数(新上下文按钮){
//将数据设置为数组(用法)
//var item=document.querySelector(“此元素的id”)
//item.setData(某些阵列)
this.contextualButtons=newContextualButtons;
},
onContextualButtonTap:函数(事件){
var item=this.$.buttonnsrepeat.itemforeElement(event.target);
this.fire('customize-listener',item.action);
}
});
this.toolbar=document.querySelector(“我的工具栏图标”);
this.toolbar.setData([{icon:'social:person add',action:'new'}]);
这只是一个可以用来让你想做的想法。虽然我已经设法让它工作了(感谢指针指向正确的方向),但我不能说我对它完全满意-例如,我有一个函数需要在点击
后运行按钮的。这现在需要在应用程序级别提供。你也可以通过自定义事件来实现这一点。Backbutton抛出“back”事件,您的应用程序路由器在文档级别侦听此事件。好主意-当您需要在不同图标之间循环时,我可以看到这一点非常有用。但是,您将如何处理它们之间的转换?如果能够像YouTube播放按钮转换为暂停按钮那样进行一次很好的转换就好了。解决我在这个元素上的问题就足够了。老实说,我没有考虑如何向每个图标添加转换,但是您可以意识到,有一个监听器可以为相应的图标执行操作,然后只需要向监听器添加额外的功能,我认为是这样的。顺便说一句,对不起我的英语。