Google 聚合物 - 铁 Pages/Selector 未更新主字段

Google Polymer - Iron Pages/Selector not updating main field

我正在使用 Google Polymer 尝试组合控制面板样式的布局,但不幸的是,当单击我的应用程序抽屉中的项目时,内容不会加载到主字段中。 url 在栏中更新并且 CSS 突出显示选择但没有其他任何反应。

我从使用 polymer init 的空白应用程序模板开始,尝试通过引用 充实结构,然后引用入门工具包作为其余部分的指南。如果有人能在正确的方向上推动我,我将不胜感激,因为我对路由的概念还很陌生。

<dom-module id="Panel-app">
  <template>
    <style>

      :host {
        display: block;
        font-family: Fira Sans Condensed;
        --app-primary-color: #1A3663;
      }

      app-header {
        background-color: var(--app-primary-color);
        color: white;
      }

      app-drawer {
        top: 64px;
        --app-drawer-content-container: {
          padding: 0px;
          background-color: #325999;
        };
      }

      .drawer-list {
        margin: 0 20px;
      }

      .drawer-list a {
        display: block;
        padding: 0 16px;
        text-decoration: none;
        color: var(--app-secondary-color);
        line-height: 40px;
      }

      .drawer-list a.iron-selected {
        color: black;
        font-weight: bold;
      }
    </style>


<app-location route="{{route}}"></app-location>
<app-route
    route="{{route}"
    pattern="/:page"
    data="{{routeData}}"
    tail="{{subroute}}"></app-route>


<app-header-layout fullbleed>
  <app-header shadow>
    <app-toolbar id="toolbar">
      <paper-icon-button icon="menu" onclick="drawer.toggle()"></paper-icon-button>
      <div main-title>Panel</div>

      <paper-menu-button>
        <paper-icon-button icon="communication:live-help" class="dropdown-trigger"></paper-icon-button>
        <paper-menu class="dropdown-content">
          <paper-item>Live Chat</paper-item>
          <paper-item>Contact List</paper-item>
          <paper-item>Leave Feedback</paper-item>
        </paper-menu>
      </paper-menu-button>


        <paper-icon-button icon="supervisor-account" class="dropdown-trigger"></paper-icon-button>
        <paper-icon-button icon="settings" class="dropdown-trigger"></paper-icon-button>


    </app-toolbar>
  </app-header>

  <app-drawer-layout>
    <app-drawer id="drawer">
      <iron-selector selected="[[page]]" attr-for-selected="name" class="drawer-list" role="navigation">
        <a name="view1" href="/view1">One</a>
        <a name="view2" href="/view2">Two</a>
        <a name="view3" href="/view3">Three</a>
      </iron-selector>
    </app-drawer>


    <iron-pages
        selected="[[page]]"
        attr-for-selected="name"
        fallback-selection="view404"
        role="main">
      <my-view1 name="view1"></my-view1>
      <my-view2 name="view2"></my-view2>
      <my-view3 name="view3"></my-view3>
    </iron-pages>

  </app-drawer-layout>
</app-header-layout>
</template>


  <script>

    Polymer({
      is: 'Panel-app',

      properties: {
        page: {
          type: String,
          reflectToAttribute: true,
          observer: '_pageChanged',
        },
      },

      observers: [
        '_routePageChanged(routeData.page)',
      ],

      _routePageChanged: function(page) {
        this.page = page || 'view1';

        if (!this.$.drawer.persistent) {
          this.$.drawer.close();
        }
      },

      _pageChanged: function(page) {
        // Load page import on demand. Show 404 page if fails
        var resolvedPageUrl = this.resolveUrl('my-' + page + '.html');
        this.importHref(resolvedPageUrl, null, this._showPage404, true);
      },

      _showPage404: function() {
        this.page = 'view404';
      },
    });
  </script>
</dom-module>

此处缺少大括号,否则绑定失败:

route="{{route}"

一定是

route="{{route}}"

然后 _routePageChanged 观察器工作