我使用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
,等等
答案 0 :(得分:2)
我在查看您的示例时遗漏的一些内容是您如何处理路由。在典型的网站中,如果用户导航到example.com/foo
或example.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
。