Zhe*_*hen 29 javascript page-refresh backbone.js
我正在使用骨干来构建我的网络应用程序.
目前我正面临一个问题,即如果我在主页上,我再也无法点击"主页"按钮刷新同一页面.
我相信这是骨干提供的限制(如果调用相同的URL,则不会重新加载页面)

有没有办法解决?因此,当我再次单击主页按钮时,我可以触发页面重新加载,即再次调用相同的URL?
ami*_*hle 38
你在找Backbone.history.loadUrl.来自注释来源:
尝试加载当前的URL片段.如果路线成功匹配,则返回
true.如果没有定义的路由与片段匹配,则返回false.
因此,对于简单的刷新链接,您可以将以下事件添加到Backbone.View:
events: {
'click a#refresh': function() {
Backbone.history.loadUrl();
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
Tha*_*yen 29
看看backbone.js源代码,默认情况下这似乎是不可能的,因为它只响应url更改.并且由于单击相同的链接,您不会触发更改事件.
Backbone.History中的代码:
$(window).bind('hashchange', this.checkUrl);
Run Code Online (Sandbox Code Playgroud)
您需要自己处理不变更.这是我做的:
$('.nav-links').click(function(e) {
var newFragment = Backbone.history.getFragment($(this).attr('href'));
if (Backbone.history.fragment == newFragment) {
// need to null out Backbone.history.fragement because
// navigate method will ignore when it is the same as newFragment
Backbone.history.fragment = null;
Backbone.history.navigate(newFragment, true);
}
});
Run Code Online (Sandbox Code Playgroud)
如果您想要使用所需视图重新加载整个页面.这可能会使主页按钮变为senes.它的优点是它会刷新内存.
转到任何路线而不加载它(没有'true')然后重新加载
Backbone.history.navigate('route/goes/here');
window.location.reload();
Run Code Online (Sandbox Code Playgroud)
backbone.history.loadUrl是解决方案.
主页按钮的单击处理功能(如果主页是WebApp的根目录)应该是:
myAppRouter.navigate('');
Backbone.history.loadUrl();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39112 次 |
| 最近记录: |