Не могу сделать новую маршрутизацию в Polymer 1.0 стартовый комплект (через page.js и iron-page)

Я новичок в полимере, и я только начинаю его с набора для начинающих Polymer 1.0

Я понимаю структуру приложения Polymer и использовал page.js для создания нового маршрута, подобного этому.

window.addEventListener('WebComponentsReady', function() {

    // We use Page.js for routing. This is a Micro
    // client-side router inspired by the Express router
    // More info: https://visionmedia.github.io/page.js/
    page('/', function () {
      app.route = 'home';
    });

    page('/users', function () {
      app.route = 'artworks';
    });

//my new routing def. <<<<<<<<
    page('/artworks', function () {
      app.route = 'artworks';
    });

    page('/users/:name', function (data) {
      app.route = 'user-info';
      app.params = data.params;
    });

    page('/contact', function () {
      app.route = 'contact';
    });

    // add #! before urls
    page({
      hashbang: true
    });

  });

как я понял, page.js устанавливает в app.route некоторые значения, а железные страницы Polymer используют app.route, чтобы выбрать правильный раздел для отображения с selected="{{route}}"код такой:

<iron-pages attr-for-selected="data-route" selected="{{route}}">
  <section data-route="home">home section</section>
  <section data-route="users">users section</section>
  <section data-route="artworks">artworks section</section>
  <section data-route="user-info">user-info section</section>
  <section data-route="contact">contact section</section>
</iron-pages>

В конце концов, в чем проблема!? хорошо, когда я использую localhost:8000/artworks page.js не изменит его на localhost:8000/#!/artworks но он делает то же самое для любого другого маршрутизируемого адреса, как localhost:8000/users или же localhost:8000/contactв результате веб-браузер будет искать файл в папке localhost:8000/artworks и ничего не найдет, поэтому возникнет ошибка 404.

я не могу понять сейчас. что я здесь пропустил? любая идея?

3 ответа

Решение

Я не знаю точно, почему, но кажется, что Полимер вообще не читал файл маршрутизации! так что я просто скопировал код маршрутизации в моем app.js файл и все теперь работает нормально!

так что теперь мой app.js имеет все коды маршрутизации в конце, и я также прикрепил page.js в заголовке моего index.html (основной файл приложения Polymer)

Понятия не имею почему, но сейчас это работает.

Не уверен, что это сработает, но, возможно, может помочь использование относительных адресов на основе вашего порта. Например, попробуйте что-то вроде app.route = window.location.protocol + '//' + window.location.hostname + ":8000" + window.location.pathname + "home";

У меня была такая же проблема, и, похоже, проблема с кешем; страница routing.html была кэширована навигатором, поэтому новые маршруты не были видны. Очистка кеша решила мою проблему. Надеюсь это поможет!

Другие вопросы по тегам