我有一个应用程序,旨在重新创建一个标准网站,包括标准页面和一个列出类别和文章的新闻模块。当您访问新闻时,会显示来自新闻页面的内容,以及类别列表或文章列表。在这种情况下,当您查看新闻页面时,将显示 (2) 类别。
在 Chrome、Firefox 和 IE 上,我可以在我的页面之间单击并返回新闻 - 进入类别、项目列表,然后是文章,然后毫无问题地返回主条目新闻页面。视图(用于主入口页面)始终显示正确的 HTML。但是,在 Windows 和 ipad 上的 Safari 中,虽然一切正常,但最终(或有时更快!),新闻条目页面上应该显示类别的 HTML 不显示。更令人沮丧的是,问题是断断续续的——我可以点击返回其他页面,然后返回新闻,现在正在显示类别 HTML!控制台从我的安静调用中显示正确的响应和 HTML:
[{"id":"22","indexID":"general", "name":"General"},{"id":"23","indexID":"newnewscat","name":"New News Cat"}]
只是我的视图没有显示 HTML。
在我的路由器中,我有 "news/:indexID":"getNews"
getNews 函数是
getNews:function(indexID) {
if (indexID == "index") {
this.getPage("news"); // display cms info for news page eg title and long desc
// do we show categories or listings?
var type = this.showItemListingOrCategories("news");
if (type.showCats == 1) {
// show cat listings
var newsCategories = new App.Collection.NewsCategory();
newsCategories.fetch({
success:function() {
var newsCategoryListing = new App.View.NewsCategoryListing({collection:newsCategories});
newsCategoryListing.render(".span9");
}
})
}
else {
// show item listings
var newsItems = new App.Collection.NewsItem([],{indexID:indexID});
newsItems.fetch({
success:function() {
var newsItemListing = new App.View.NewsItemListing({collection:newsItems});
newsItemListing.render({element:".span9",type:"page"});
}
});
}
}
}
newsCategoryListing 视图是
App.View.NewsCategoryListing = Backbone.View.extend({
tagName: "table",
className:"catListing",
render:function($element){console.log("hello");this.collection.each(function(newsCategory) {
this.$el.append(new App.View.NewsCategoryItem({model:newsCategory}).render().el).appendTo($element);
},this);
return this;
});
我在上面的渲染函数中添加了一个 console.log("hello") - 当无法显示类别列表的 html 时,它会正确显示。
我希望这是足够的信息——还有其他人对 Safari 有类似的问题吗?
非常感谢