2012-08-09 55 views
0

我似乎无法解决这个简单的问题。查看主干路由器的变化不断恢复到主页

我有一个骨干/木偶应用,在那里我定义了路由器:

app.utils.AppRouter = Backbone.Marionette.AppRouter.extend({ 

initialize: function(){ 

    this.route("", "home", function(){ 
     console.log("In home!"); 
     app.layout.content.show(new app.views.BrowseRestaurantsLayout()); 
    }); 

    this.route("account", "account", function(){ 
     console.log("In account!"); 
     app.layout.content.show(new app.views.AccountView()); 
    }); 
} 
}); 

别的地方在我的代码,我需要导航到#account页面,所以我呼吁:

app.router.navigate('account', {trigger:true}); 

我可以看到URL更改为#account,并且我的AccountView页面确实会立即显示,然后消失,并被主页替换。

当我触发这种改变控制台上写着:

In account! 
In home! 

我缺少什么?

回答

1

您的家乡路线可能是您的帐户路线后被调用的全部路线。

当您将路线更改为此路线时会发生什么?

this.route("/", "home", function(){ 
    console.log("In home!"); 
    app.layout.content.show(new app.views.BrowseRestaurantsLayout()); 
}); 

或者它可能是路线的顺序。尝试添加最后的家庭路由器

+0

如果我将home路由改为this.route('home','home',...),那么它可以工作,但是当人们第一次登陆它时,我需要一条回家路线将我的应用程序指向主页。如果我添加该路线,则问题再次出现。此外,当我触发帐户路线时,该视图错误地正确显示,但URL中的#account片段消失。 – 2012-08-09 20:17:39

0

我不确定这是否能解决任何问题,但配置路由器的方式很奇怪。我没有看到Marionette的appRouter需要,因为你没有使用它的功能,而且我也不会在初始化方法中配置路由。这样配置路由器更“骨干式”:


app.utils.AppRouter = Backbone.Router.extend({ 

    routes: { 
    "": "home", 
    "account": "account" 
    }, 

    home: function(){ 
    console.log("In home!"); 
    app.layout.content.show(new app.views.BrowseRestaurantsLayout()); 
    }, 

    account: function(){ 
    console.log("In account!"); 
    app.layout.content.show(new app.views.AccountView()); 
    } 
}); 

你定义路由的方式可能与它有关。

1

您是否检查过模板?我有一个类似的问题,并发现问题是我的链接中的href。

<a href=#"></a> 

它导致路由器在将URL临时切换到我真正想要的那个之后发回我的根目录。