聚合物 - 根据选择 iron-page 更改 paper-toolbar 内容
Polymer - Change paper-toolbar contents depending on selected iron-page
扩展 Polymer Starter Kit 我正在努力弄清楚如何在不同的 iron-page
处于活动状态时将汉堡包 (menu
) 图标更改为不同的按钮。
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>
选择item-info
路由时,我想用a back
按钮替换menu
paper-toggle-button
。可能将工具栏文本从应用程序标题更改为 'Back to Top Stories' say.
现在,我认为这可以通过在每个控件上设置一个 id
,然后在 item-info
元素中设置一些 Javascript 来进行这些更改。我更喜欢更模块化的东西,因为这会将我的 item-info
元素与其外部的内容紧密联系起来。
我假设您的 paper-toolbar
和 iron-pages
都位于同一个模板中,因此两者都可以评估 route
属性。您可以轻松地进行 if-template or toggle the hidden parameter of the navigation element.
我做了一个自定义聚合物元素,您将图标数组传递给该元素并将它们放在工具栏上。
代码如下:
<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' }]);
这只是一个想法,可以用来让你想做。
扩展 Polymer Starter Kit 我正在努力弄清楚如何在不同的 iron-page
处于活动状态时将汉堡包 (menu
) 图标更改为不同的按钮。
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>
选择item-info
路由时,我想用a back
按钮替换menu
paper-toggle-button
。可能将工具栏文本从应用程序标题更改为 'Back to Top Stories' say.
现在,我认为这可以通过在每个控件上设置一个 id
,然后在 item-info
元素中设置一些 Javascript 来进行这些更改。我更喜欢更模块化的东西,因为这会将我的 item-info
元素与其外部的内容紧密联系起来。
我假设您的 paper-toolbar
和 iron-pages
都位于同一个模板中,因此两者都可以评估 route
属性。您可以轻松地进行 if-template or toggle the hidden parameter of the navigation element.
我做了一个自定义聚合物元素,您将图标数组传递给该元素并将它们放在工具栏上。
代码如下:
<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' }]);
这只是一个想法,可以用来让你想做。