假设我有这样的路由器:
var Router = Backbone.Router.extend({
routes: {
'': 'index',
'firstpage' : 'firstpage',
'secondpage' : 'secondpage',
'thirdpage' : 'thirdpage',
'fourthpage' : 'fourthpage',
'fifthpage' : 'fifthpage',
},
firstpage: function() {
this.firstpageView = new FirstpageView({el:'#topContent'}).render();
},
secondpage: function() {
this.secondpageView = new SecondpageView({el:'#topContent'}).render();
this.subMenuView = new SubMenuView({el:'#subMenu',collection:this.subMenuCollection}).render();
},
所以,在第二页上我有一个带有3个锚点的附加菜单,这是我用JSON制作的一个集合:
[
{
"name":"news",
"id":"1",
"url":"news",
"jsonClass": "news"
},
{
"name":"about",
"id":"2",
"url":"about",
"jsonClass": "about"
},
{
"name":"contact",
"id":"3",
"url":"contact",
"jsonClass": "contact"
}
]
HTML模板看起来像这样(我使用HandlebarsJS)来生成它们:
<ul>
{{#each submenu}}
<li>
<a class="{{this.jsonClass}}" href="secondpage/{{this.url}}">{{this.name}}</a>
</li>
{{/each}}
最后,在我的SubmenuView
我有:
events: {
'click a.news': 'news',
'click a.about': 'about'
},
news: function(event) {
event.preventDefault();
var newsRouter = new Backbone.Router();
var route = '/secondpage';
newsRouter.navigate(route, {trigger: true});
},
etc...etc...
这给了我错误:找不到网址!我可以通过将pushstate设置为false来修复它,但我不想使用哈希符号 - &gt; localhost / secondpage / #news - 即使我点击“新闻” - 锚点,我怎样才能实现我的URL看起来像localhost / secondpage而已,仅此而已?
我尝试过类似的事情:
'secondpage/news' : 'news',
'secondpage/about' : 'about',
'secondpage/contact' : 'contact'
在我的主路由器中,但是没有用,所以有人可以帮助我吗?这开始惹恼我,让我疯狂!
谢谢!