2017-09-19 41 views
0

我一直在为一个项目调整聚合物入门套件,有一件事我无法摆弄我的头,它也非常简单。聚合物入门套件链接页面的问题

我试图访问使用铁页的自定义元素。

这里是我的应用程序的代码:

<!-- 
 
@license 
 
Copyright (c) 2016 The Polymer Project Authors. All rights reserved. 
 
This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt 
 
The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt 
 
The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt 
 
Code distributed by Google as part of the polymer project is also 
 
subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt 
 
--> 
 

 
<link rel="import" href="../bower_components/polymer/polymer-element.html"> 
 
<link rel="import" href="../bower_components/app-layout/app-drawer/app-drawer.html"> 
 
<link rel="import" href="../bower_components/app-layout/app-drawer-layout/app-drawer-layout.html"> 
 
<link rel="import" href="../bower_components/app-layout/app-header/app-header.html"> 
 
<link rel="import" href="../bower_components/app-layout/app-header-layout/app-header-layout.html"> 
 
<link rel="import" href="../bower_components/app-layout/app-scroll-effects/app-scroll-effects.html"> 
 
<link rel="import" href="../bower_components/app-layout/app-toolbar/app-toolbar.html"> 
 
<link rel="import" href="../bower_components/app-route/app-location.html"> 
 
<link rel="import" href="../bower_components/app-route/app-route.html"> 
 
<link rel="import" href="../bower_components/iron-pages/iron-pages.html"> 
 
<link rel="import" href="../bower_components/iron-selector/iron-selector.html"> 
 
<link rel="import" href="../bower_components/paper-icon-button/paper-icon-button.html"> 
 
<link rel="import" href="my-icons.html"> 
 

 
<link rel="lazy-import" href="my-view1.html"> 
 
<link rel="lazy-import" href="my-view2.html"> 
 
<link rel="lazy-import" href="my-view3.html"> 
 
<link rel="lazy-import" href="iss-supervisor-login.html"> 
 
<link rel="lazy-import" href="my-view404.html"> 
 

 
<dom-module id="iss-supervisor-app"> 
 
    <template> 
 
    <style> 
 
     :host { 
 
     --app-primary-color: #002d56; 
 
     --app-secondary-color: black; 
 

 
     display: block; 
 
     } 
 

 
     app-drawer-layout:not([narrow]) [drawer-toggle] { 
 
     display: none; 
 
     } 
 

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

 
     app-header paper-icon-button { 
 
     --paper-icon-button-ink-color: white; 
 
     } 
 

 
     .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; 
 
     } 
 

 
     .logo { 
 
     width: 100px; 
 
     height: auto; 
 
     } 
 
    </style> 
 

 
    <app-location route="{{route}}" url-space-regex="^[[rootPath]]"></app-location> 
 
    <app-route 
 
     route="{{route}}" 
 
     pattern="[[rootPath]]:page" 
 
     data="{{routeData}}" 
 
     tail="{{subroute}}"></app-route> 
 

 
    <app-drawer-layout fullbleed narrow="{{narrow}}"> 
 
     <!-- Drawer content --> 
 
     <app-drawer id="drawer" slot="drawer" swipe-open="[[narrow]]"> 
 
     <app-toolbar>Menu</app-toolbar> 
 
     <iron-selector selected="[[page]]" attr-for-selected="name" class="drawer-list" role="navigation"> 
 
      <a name="login" href="/login">New View</a> 
 
      <a name="view1" href="/view1">View One</a> 
 
      <a name="view2" href="[[rootPath]]view2">View Two</a> 
 
      <a name="view3" href="[[rootPath]]view3">View Three</a> 
 
     </iron-selector> 
 
     </app-drawer> 
 

 
     <!-- Main content --> 
 
     <app-header-layout has-scrolling-region> 
 

 
     <app-header slot="header" condenses reveals effects="waterfall"> 
 
      <app-toolbar> 
 
      <paper-icon-button icon="my-icons:menu" drawer-toggle></paper-icon-button> 
 
      <img class="logo" src="/../images/logo.jpg"> 
 
      <div main-title>Access 365 - Supervisor</div> 
 
      </app-toolbar> 
 
     </app-header> 
 

 
     <iron-pages 
 
      selected="[[page]]" 
 
      attr-for-selected="name" 
 
      fallback-selection="view404" 
 
      role="main"> 
 
      <iss-supervisor-login name="login"></iss-supervisor-login> 
 
      <my-view1 name="view1"></my-view1> 
 
      <my-view2 name="view2"></my-view2> 
 
      <my-view3 name="view3"></my-view3> 
 
      <my-view404 name="view404"></my-view404> 
 
     </iron-pages> 
 
     </app-header-layout> 
 
    </app-drawer-layout> 
 
    </template> 
 

 
    <script> 
 
    class IssSupervisorApp extends Polymer.Element { 
 
     static get is() { return 'iss-supervisor-app'; } 
 

 
     static get properties() { 
 
     return { 
 
      page: { 
 
      type: String, 
 
      reflectToAttribute: true, 
 
      observer: '_pageChanged', 
 
      }, 
 
      routeData: Object, 
 
      subroute: String, 
 
      // This shouldn't be neccessary, but the Analyzer isn't picking up 
 
      // Polymer.Element#rootPath 
 
      rootPath: String, 
 
     }; 
 
     } 
 

 
     static get observers() { 
 
     return [ 
 
      '_routePageChanged(routeData.page)', 
 
     ]; 
 
     } 
 

 
     _routePageChanged(page) { 
 
     // If no page was found in the route data, page will be an empty string. 
 
     // Deault to 'view1' in that case. 
 
     this.page = page || 'view1'; 
 

 
     // Close a non-persistent drawer when the page & route are changed. 
 
     if (!this.$.drawer.persistent) { 
 
      this.$.drawer.close(); 
 
     } 
 
     } 
 

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

 
     _showPage404() { 
 
     this.page = 'view404'; 
 
     } 
 
    } 
 

 
    window.customElements.define(IssSupervisorApp.is, IssSupervisorApp); 
 
    </script> 
 
</dom-module>

这里是元素我试图插入代码:

<!-- Load the Polymer.Element base class --> 
 
<link rel="import" href="../bower_components/polymer/polymer-element.html"> 
 

 
<dom-module id="iss-supervisor-login"> 
 
    <!-- Defines the element's style and local DOM --> 
 
    <template> 
 
    <style> 
 
     :host { 
 
     display: block; 
 

 
     padding: 16px; 
 
     } 
 
    </style> 
 

 
    <h1>New view</h1> 
 
    </template> 
 
    <script> 
 
    // Your new element extends the Polymer.Element base class 
 
    class IssSupervisorLogin extends Polymer.Element { 
 
     static get is() { return 'iss-supervisor-login'; } 
 
    } 
 
    //Now, register your new custom element so the browser can use it 
 
    customElements.define(IssSupervisorLogin.is, IssSupervisorLogin); 
 
    </script> 
 
</dom-module>

令我非常沮丧的是,我得到了这个使用教程的工作,并且在更改了一些名称之后,我无法使其工作。每当我尝试切换页面,我都会得到默认的404错误页面。谁能帮我吗?

回答

0
<iron-selector selected="[[page]]" attr-for-selected="name" class="drawer-list" role="navigation"> 
     <a name="login" href="/login">New View</a> 
     <a name="view1" href="/view1">View One</a> 
     <a name="view2" href="[[rootPath]]view2">View Two</a> 
     <a name="view3" href="[[rootPath]]view3">View Three</a> 
</iron-selector> 

上面的name属性用于导入/加载正在查看的页面。

var resolvedPageUrl = this.resolveUrl('my-' + page + '.html'); 

所以,当你试图加载iss-supervisor-login.html页面。它会加载my-login.html这是没有找到,所以你有404错误。

您需要根据您的网页名称更改名称属性和变量resolvedPageUrl