聚合物 - 根据选定的铁页更改纸张工具栏内容

时间:2015-08-21 10:37:45

标签: javascript polymer polymer-1.0 polymer-starter-kit

扩展聚合物入门套件我正在努力弄清楚当另一个menu处于活动状态时如何将汉堡包(iron-page)图标更改为其他按钮。

的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路线后,我想用menu按钮替换paper-toggle-button back。可能会将工具栏文本从应用程序标题更改为“回到顶部故事”。说。

现在,我认为可以通过在每个控件上设置id然后在item-info元素中添加一些Javascript来实现这些更改。我更喜欢更模块化的东西,因为这会将我的item-info元素与其外部的内容紧密联系起来。

2 个答案:

答案 0 :(得分:1)

我认为您的paper-toolbariron-pages都位于同一模板中,因此两者都可以评估route属性。您可以轻松地进行if-template或切换hidden parameter of the navigation element

答案 1 :(得分:1)

我做了一个自定义聚合物元素,你传递一系列图标并将它们放在工具栏上。

以下是代码:

<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' }]);

这只是一个可以用来做你想做的想法。