BackboneJS - View + Clean URL上的附加菜单

时间:2014-01-06 15:44:18

标签: json backbone.js handlebars.js

假设我有这样的路由器:

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'

在我的主路由器中,但是没有用,所以有人可以帮助我吗?这开始惹恼我,让我疯狂!

谢谢!

0 个答案:

没有答案