Javascript 第一次呈现页面时未显示主干视图
我有以下一组视图和路由器,当页面第一次显示时,在路由器的“初始化”方法中导航的“欢迎”视图也不可见-渲染方法被调用,但元素没有更新。如果导航到另一个视图(hashbang),然后返回,我可以看到初始视图 有人知道我做错了什么吗Javascript 第一次呈现页面时未显示主干视图,javascript,backbone.js,Javascript,Backbone.js,我有以下一组视图和路由器,当页面第一次显示时,在路由器的“初始化”方法中导航的“欢迎”视图也不可见-渲染方法被调用,但元素没有更新。如果导航到另一个视图(hashbang),然后返回,我可以看到初始视图 有人知道我做错了什么吗 var AppRouter = Backbone.Router.extend({ contentView: null, routes: { 'welcome': 'welcomeAction',
var AppRouter = Backbone.Router.extend({
contentView: null,
routes: {
'welcome': 'welcomeAction',
'settings': 'settingsAction',
'books': 'booksAction',
'book/:id': 'bookAction'
},
initialize: function () {
this.navigate('welcome', true);
},
welcomeAction: function () {
this.contentView = new views.WelcomeView({ 'model': new models.Welcome() });
},
settingsAction: function () {
this.contentView = new views.SettingsView({ 'model': new models.Settings() });
},
booksAction: function () {
this.contentView = new views.BooksView({ 'model': new models.Books() });
},
bookAction: function (id) {
this.contentView = new views.BookView({ 'model': new models.Book({ 'Id': id }) });
}
});
function App() {
this.router = null;
this.initialize = function () {
this.router = new AppRouter;
Backbone.history.start();
};
};
var reader = new App;
reader.initialize();
视图如下所示:
WelcomeView: Backbone.View.extend({
'el': '#content-pane',
tagName: 'div',
template: _.template(templates.welcome),
events: {
},
initialize: function () {
_.bindAll(this, 'render');
this.renderLoading();
this.model.fetch({ success: _.bind(function () {
this.model.set({ Date: new Date() });
this.render();
}, this)
});
},
renderLoading: function () {
var html = _.template(templates.loading)();
$(this.el).empty();
$(this.el).append(html);
},
render: function () {
var html = this.template({ date: this.model.get('Date') });
$(this.el).empty();
$(this.el).append(html);
}
}),
看起来像是一个
$(文档)。准备好发布给我了。您确定在创建视图之前已加载页面的所有内容(特别是#内容窗格
)吗?看起来像一个$(文档)。准备好发布给我了吗。您确定在创建视图之前已加载页面的所有内容(特别是#内容窗格
)吗?为什么同时有el
和标记名
?定义el
时,它应该引用现有元素,如果未定义el
,则使用标记名
、类名
和id
属性创建一个新元素。如果#内容窗格
已经存在,则删除标记名
,如果不存在,则不定义它并使用标记名
和id
也使用。html(html)
而不是。empty()
然后。追加(html)
。因为我不知道更好的方法:)谢谢你的建议…@AkwardCoder::。。让我知道这些改变是否有帮助。如果没有,我将尝试重现问题。不幸的是,问题没有解决,“el”是一个div标记,当用户单击不同的链接时,div的内容将被替换-当页面最初显示时呈现第一个视图时,这一切都有效…为什么同时有el
和标记名
?定义el
时,它应该引用现有元素,如果未定义el
,则使用标记名
、类名
和id
属性创建一个新元素。如果#内容窗格
已经存在,则删除标记名
,如果不存在,则不定义它并使用标记名
和id
也使用。html(html)
而不是。empty()
然后。追加(html)
。因为我不知道更好的方法:)谢谢你的建议…@AkwardCoder::。。让我知道这些改变是否有帮助。如果没有,我将尝试重现问题。不幸的是,问题没有解决,“el”是一个div标记,当用户单击不同的链接时,div的内容将被替换-当页面最初显示时呈现第一个视图时,这一切都可以接受。。。