2013-08-31 52 views
0

我有这个奇怪的问题,当我浏览页面时没有显示视图。但是,如果我刷新页面,它会显示。骨干视图不会在第一页加载时显示

在我的路由器,我试图呈现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以查看它们是否有冲突。但是,即使使用单个视图渲染,在刷新页面之前,页眉仍然不会显示。

以下是我在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的:真});

+0

是'#wrapper指定'当你期望它是DOM时? –

+0

这是在Dom。 –

+1

你确定吗?这具有计时问题的所有特征。 –

回答

0

据我所知,没有什么不对你的看法。这很可能是一个时间问题。您的视图可能在DOM中存在#wrapper之前被初始化(并因此呈现)。我的猜测是,如果你尝试以下方法,输出将是0

dust.render('dust/browseHeader','', function(error, output) { 
    console.log($('#wrapper').length); 
    $('#wrapper').append(output); 
}); 

确保在创建视图的DOM加载完成后,像这样:

$(document).ready(function() { 
    var header = new browseHeader(); 
}); 
+0

不幸的是,当我console.log你写的,它说1,即使它没有出现。 –