2015-10-14 55 views
1

我正在用Polymer製作一箇中型應用程序,並使用聚合物入門套件來啓動使用page.js進行路由的事情。聚合物+ page.js閃光通知紙張烤麪包

我想使用paper-toast元素實現Flash消息功能。

在其他技術/框架中,這是通過在路由被改變時檢查屬性是否存在來實現的。如果它存在,它會穿上相關的Flash/Toast消息。

How ... with Polymer & Page.js是否可以複製這種類型的功能? Page.js似乎沒有更改路線的任何事件。

我能想到的唯一方法是爲page('/route')函數創建一個代理函數,每當我想要轉到一個新頁面,然後調用實際的page函數時,我必須調用該函數。有沒有更好的辦法?

回答

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')調用,否則它將不會通過代理。