Polymer core-animated-pages默认页面

时间:2014-07-23 14:04:30

标签: javascript polymer

我使用Polymer core-animated-pages在我的网站主页之间切换。

我选择需要通过<section>的ID显示哪个页面。您可以在行动here中查看示例。现在,我遇到的问题是,在加载页面时,应该从网址加载应该选择的页面,例如www.example.com/home显示主页,www.example.com/activities显示活动页面(代码遗漏了示例,因为不相关)。

但是,如果链接中提供的ID不存在,我该怎么办?是否可以选择显示带有404消息的默认core-animated-pages页面?或者我是否必须检查每个链接是否在我的所有页面的数组中,如果是这样,手动加载错误页面,否则显示正确的页面?

再次举出示例:jsbin

修改:要显示我的网页处理链接的方式,这里有一个更新示例:jsbin。链接基本上是www.example.com/#home,等等

2 个答案:

答案 0 :(得分:2)

我在查看您的示例时遗漏的一些内容是您如何处理路由。在典型的网站中,如果用户导航到example.com/fooexample.com/#foo,我的期望(使用您当前的设置)会将您带到ID为{{core-animated-pages的相应foo页面1}}或与该路线对应的部分。

使用路由(可能是Polymer flatiron-director元素),基本解决方案可能会查询元素中的DOM,以查看是否可以找到ID notsupportedURL的一部分。如果没有,则默认将用户带到您的core-animated-pages 404页面,该页面不会比您现有的页面复杂得多。

答案 1 :(得分:1)

你可以在这里做几件事。

在最简单的情况下,您可以只验证pageChanged处理程序中的值。如果页面不存在,请更新它:

pageChanged: function(){ var foundPage = this.$.pages.querySelector('#' + this.page); if (! foundPage) { this.page = 'error' } ...

请参阅:http://jsbin.com/xequvone/14/edit

如果您不将core-menu直接绑定到core-animated-pages,则可以添加所需的逻辑。以下版本与前一版本完全相同,但对所选页面使用单独的变量:

http://jsbin.com/xequvone/12/edit

如果您的网址方案更复杂,我认为您需要路由器。例如,如果哈希包含多个级别和参数,例如#people#/people/search#/people/edit/12343