通常在单页应用程序(spa)中,我确实有一个页面,其中有一个sidenav菜单。在该菜单中,有多个锚标签。
这些锚标记的url将由angular / react / sammy js路由器处理,并且主div将基于从控制器返回的html进行刷新。
很简单,对不对?
但是,设想一种场景,其中用户通过浏览器地址栏直接访问定位标记URL。那么只有返回的html段将被加载到整个页面。
有什么办法可以处理这种情况?我的意思是说,每当用户直接访问该URL时,他/她都会得到适当的寻址吗?
编辑:可能是我不太清楚问题陈述。让我详细说明一下:
我的问题是,我们可以实现某种设计方法,以便使这两种方法很好地工作吗?
最好选择有角度的,ui-router
而不是sammy js router
,当然我对此一无所知。但是angular-ui-router
,我们通过定义状态和网址$stateProvider
的ui-router
。即使用户直接在浏览器中输入了url,也只有在状态中定义的url匹配时,才能正确寻址该URL。
https://github.com/angular-ui/ui-router/tree/legacy有关更多信息,请参见此处。
这是一个例子
$stateProvider.state('',{
url: '/',
tempate: 'path/to/.html',
controller: 'controllerToHandle'
})
.state('home', {
url: '/home',
template: 'path/to/home.html',
controller: 'HmeCtrl'
})
.state('home.list',{ //defines child states with dot
url: '/list', //shows url as home/list because it is a child state
template: 'path/to/list.html'
})
$urlRouterProvider.otherwise('/')
如果没有匹配的路径,则使用同样,用户可以从home
到遍历list
,例如,www.my-app.com
是您的主机名。如果他输入的www.my-app.com/home/list
URL/home/list
匹配,则将其转到home/list
页面;如果输入了错误的URL,则home
由于otherwise
方法而将其转到页面。
如果在react / sammy路由器中有类似的内容,请这样做以获得更好的解决方案
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句