在Backbone应用中如何刷新页面

30

我正在使用backbone构建我的网页应用。

目前我面临的问题是,如果我在主页上,我无法通过再次点击“主页”按钮来刷新同一页面。

我相信这是backbone提供的限制(如果调用相同的URL,则不重新加载页面)

enter image description here

有没有什么方法可以解决这个问题?也就是说,当我再次点击主页按钮时,可以触发页面重新加载,即再次调用相同的URL?

13个回答

0
为了提供一个可重用的代码片段,我使用辅助方法增强了Backbone.View,在Backbone路由器的限制下,可以在需要重新加载相同页面的任何位置重复使用它。
在我们的app.js文件或任何其他适当的位置。
Backbone.View = Backbone.View.extend({
    refreshPage: function(e){
        if(e.target.pathname){
            Backbone.history.navigate(e.target.pathname);
        }
        window.location.reload();           
    }
});

如果我们有这样的链接

<a href="/whatever" id="whateverId">Some text </a>

在我们的视图中,我们只需要将点击事件绑定到回调函数上,以利用刷新页面功能,因为刷新页面助手将通过原型链可用。
events: {
    'click #whateverId': 'refreshPage', 
}

只要我们不需要更改“a标签”,这是一种更干净的解决方案,可以节省一些样板代码

希望能有所帮助


0

它可以正常工作

 myBackboneRouter.navigate("users", {trigger: true})

0

通常您可以修改您的路由以包含一个splat,这样您就可以在href的末尾追加一个随机字符串使其变得唯一,但仍然匹配“home”路由。(请注意:将此作为最后一个路由)。

在路由中:

routes: {
    "*str": "home"
}

在视图中:

render: function() {
    var data = {href: +(new Date())};
    _.extend(data, this.model.attributes);
    this.$el.html(this.template(data));
    return this;
}

在模板中(这里展示的是handlebars):

<a href="{{href}}">Home Link</a>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接