无法在Polymer 1.0 starter-kit中创建新的路由(通过page.js和iron-page)

时间:2015-06-25 12:27:49

标签: javascript polymer page.js

我是聚合物新手,我只是用Polymer 1.0 starter-kit

开始

我理解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 iron-pages使用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/userslocalhost:8000/contact等其他每个路由地址都是如此 因此,Web浏览器将在localhost:8000 / artwork文件夹中搜索该文件,并且找不到任何内容,因此将发生404错误。

我现在无法理解。我错过了什么? 任何的想法?

3 个答案:

答案 0 :(得分:2)

我不确切知道为什么,但似乎聚合物根本没有读取路由文件!所以我只是在我的app.js文件中复制粘贴路由代码,现在一切正常!

所以现在我的app.js在最后都有所有的路由代码,我还将page.js附加在index.html的头部(Polymer应用程序的主文件)

我不知道为什么,但它现在正在运作。

答案 1 :(得分:0)

不确定这是否可行,但是根据您的端口使用相对地址可能有所帮助。 例如尝试类似的东西 app.route = window.location.protocol +&#39; //&#39; + window.location.hostname +&#34;:8000&#34; + window.location.pathname +&#34; home&#34 ;;

答案 2 :(得分:0)

我遇到了同样的问题,似乎是缓存问题; routing.html页面由navigator缓存,因此没有看到新路由。 清除缓存解决了我的问题。 希望这有帮助!