我有一个奇怪的问题,当我转到页面时没有显示视图。但是,如果我刷新页面,它会出现。
在我的路由器中,我尝试渲染 2 个视图,如下所示:
tags: function(tags) {
self = this;
self.multipleTags = tags.split('/');
self.tagsArray = $.grep(self.multipleTags, function(item,index) {
return (item != '');
});
var browseHeader = new BrowseHeader;
var content = new tagsView({query:self.tagsArray});
},
虽然我的 BrowseHeader 有问题,但 tagsView 工作正常。我确实尝试删除我的 tagsView以查看它们是否存在冲突。但是,即使使用单个视图渲染,在我刷新页面之前,标题仍然不会显示。
这是我在 BrowseHeader 视图中所做的事情:
var browseHeader = Backbone.View.extend({
initialize: function() {
this.render();
},
template: function() {
dust.render('dust/browseHeader','', function(error, output) {
$('#wrapper').append(output);
});
},
render: function() {
this.template();
},
el: '#wrapper',
events: {
'click .academy_filter' : "click_filter"
},
click_filter: function(event) {
target = event.target;
$('.academy_filter').removeClass('active');
$(target).addClass('active');
EventBus.trigger('header:click_filter', target);
}
});
当我 console.log 输出时,它确实显示了输出的 html,尽管它没有显示在页面上。所以我知道我的灰尘模板正在工作。当我将 BrowseHeader 渲染函数简化为 $('#wrapper').append("this"); 我仍然遇到同样的问题。
有任何想法吗?
更新:显然它与浏览器和 pushState 有关,因为当我将路由器更改为以下时,它工作正常。
Backbone.history.start({pushState: true});