1

我正在使用 Polymer 构建一个中型应用程序,并使用 Polymer Starter Kit 启动使用page.js进行路由的事情。

我想使用该paper-toast元素实现 Flash 消息功能。

在其他技术/框架中,这是通过检查路由更改时是否存在属性来实现的。如果存在,它会为相关的 flash/toast 消息提供支持。

如何...使用 Polymer 和 Page.js 可以复制这种类型的功能?Page.js 似乎没有任何更改路线的事件。

page('/route')我能想到的唯一方法是为每次我想转到一个新页面时必须调用的函数创建一个代理函数,然后调用实际page函数。有没有更好的办法?

4

1 回答 1

0

暂时我已经实现了如下......似乎没问题,但如果有人可以提出改进建议,请告诉我。

routing.html

window.addEventListener('WebComponentsReady', function() {
    // Assign page to another global object
    LC.page = page;

    // Define all routes through this new object
    LC.page('/login', function () {
      app.route = 'login';
      app.scrollPageToTop();
    });

  ....
   //implement remaining routes

   // page proxy... to intercept calls
    page = function(path) {
      // dispatch event
      document.dispatchEvent(new Event('LC.pageChange', {path: path}));
      // call the real page
      LC.page(path);
    }; 
});

然后你想听的地方..在我的情况下,在lc-paper-toast添加到应用程序文件中的元素index.html中,我现在可以在页面更改时收听...

 ready: function() {
      document.addEventListener('LC.pageChange', function(e){
        console.log('page change' , e);
      }, false);
    }

唯一需要注意的是必须调用所有页面更改,page('/route')否则它不会通过代理。

于 2015-10-14T23:14:25.667 回答