2
我正在使用聚合物入門工具包,並希望每個路由的內容在一個單獨的文件(/pages/games.html,/pages/movies.html等)中,但我可以沒有找到任何這方面的例子。使用Page.js聚合物應用路由部分
難道有人指着我正確的方向嗎?還是不可能或不建議像這樣實施路由?
我正在使用聚合物入門工具包,並希望每個路由的內容在一個單獨的文件(/pages/games.html,/pages/movies.html等)中,但我可以沒有找到任何這方面的例子。使用Page.js聚合物應用路由部分
難道有人指着我正確的方向嗎?還是不可能或不建議像這樣實施路由?
你可以通過很多不同的方式來處理這個問題(在構建時替換index.html中的一個持有者,交換不同的路由器)。一種這樣的方法是實現你的文件,然後將它們提取()到DOM中。這是page.js回購中概述的部分示例中使用的方法。
所以,讓我們修改iron-pages
在index.html
在入門工具包具有裝載部分:
<iron-pages attr-for-selected="data-route" selected="{{route}}">
<!-- Block we'll load our partials into -->
<section id="load" data-route="load"></section>
...
然後讓我們修改elements/routing.html
改變我們page.js.我們的路線/test
我們的目標負載部分:
window.addEventListener('WebComponentsReady', function() {
page('/test', function() {
// iron-pages needs to show the proper section
// in this case, our designated loading target
app.route = 'load';
// We include fetch.js polyfill in route.html for simplicity
// 1. bower install fetch
// 2. Add <script src="../../bower_components/fetch/fetch.js"></script> to routing.html
fetch('/pages/test.html')
.then(function(response) {
return response.text()
}).then(function(body) {
document.querySelector('#load').innerHTML = body;
});
});
...
然後我們可以實現我們想要在routing.html
頁面根據需要,將加載HTML頁面中的任何數量。
請注意,這種基本的方法沒有考慮緩存響應(後退/前進會再次觸發請求,您可能不希望從性能角度考慮),並且我們沒有捕捉到我們的錯誤上面的例子。但是這是一個這樣的方法。
謝謝,這就是我正在尋找的東西。但是,模板和數據綁定將如何在/pages/test.html中工作?我會想象我們需要動態地初始化該頁面中的所有內容? – Mike
如果你需要綁定和模板,那麼我會採取不同的方式。我將我的功能定義爲一個自定義元素,然後使用Polymer提供的綁定和模板操作。這樣可以在不需要AJAX的情況下爲您提供類似的設置(單獨文件中的代碼)(您只需在區塊中定義標籤,然後通過page.js路由器設置進行導航)。 –
應用程序定義在哪裏,我無法在任何地方找到它,並且在線看過它多次。即app.route –