Jah*_*hel 0 polymer polymer-1.0
<iron-pages attr-for-selected="data-route" selected="{{route}}">
<section data-route="home">
<paper-material elevation="1">
<bortini-home></bortini-home>
</paper-material>
</section>
<section data-route="tv">
<paper-material elevation="1">
<iron-pages attr-for-selected="data-route" selected="{{route}}">
<section data-route="tvList">
<paper-material elevation="1">TV list</paper-material>
</section>
<section data-route="tvAdd">
<paper-material elevation="1">TV Add</paper-material>
</section>
<section data-route="tvEdit">
<paper-material elevation="1">TV edit</paper-material>
</section>
<section data-route="tvView">
<paper-material elevation="1">TV details</paper-material>
</section>
</iron-pages>
</paper-material>
</section>
<section data-route="users">
<paper-material elevation="1">
<h2 class="paper-font-display2">Users</h2>
<p>This is the users section</p>
<a href="/users/Rob">Rob</a>
</paper-material>
</section>
<section data-route="user-info">
<paper-material elevation="1">
<h2 class="paper-font-display2">
User:<span>{{params.name}}</span>
</h2>
<div>This is <span>{{params.name}}</span>'s section</div>
</paper-material>
</section>
<section data-route="contact">
<paper-material elevation="1">
<h2 class="paper-font-display2">Contact</h2>
<p>This is the contact section</p>
</paper-material>
</section>
</iron-pages>
Run Code Online (Sandbox Code Playgroud)
我的路线看起来像 -
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('/tv', function () {
app.route = 'tvAdd';
});
page('/tvAdd', function () {
app.route = 'tvAdd';
});
page('/users', function () {
app.route = 'users';
});
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
});
});
Run Code Online (Sandbox Code Playgroud)
我使用"page.js"进行路由.
当我按"tv"菜单时,它应该显示"tvAdd",但它只显示空屏幕.
提前致谢.
发生这种情况的原因是因为这两个<iron-pages>元素都绑定到同一个属性.进一步详细说明,这是一个例子:
route 改变为 tv<iron-pages>元素的selected属性已更改为tvtv页面在父选择<iron-pages><iron-pages>的selected财产改为tvtv孩子中没有页面<iron-pages>,因此在其中没有选择任何页面,它仍然是空白的.如果您要设置route为在子项中使用的路径名之一,则同样如此<iron-pages>.
要解决此问题,必须将两个<iron-pages>属性绑定到不同的属性,第一个属性将确定您所在的父路由,第二个属性将确定子路由(如果有).
之后,您只需在路由回调中设置两个属性.
一些伪代码:
<iron-pages attr-for-selected="data-route" selected="{{route}}">
...
<section data-route="tv">
...
<iron-pages attr-for-selected="data-route" selected="{{childRoute}}">
...
<section data-route="tvList">
Run Code Online (Sandbox Code Playgroud)
page('/tvAdd', function () {
app.route = 'tv';
app.childRoute = 'tvAdd';
});
Run Code Online (Sandbox Code Playgroud)