Javascript 第一次呈现页面时未显示主干视图

Javascript 第一次呈现页面时未显示主干视图,javascript,backbone.js,Javascript,Backbone.js,我有以下一组视图和路由器,当页面第一次显示时,在路由器的“初始化”方法中导航的“欢迎”视图也不可见-渲染方法被调用,但元素没有更新。如果导航到另一个视图(hashbang),然后返回,我可以看到初始视图 有人知道我做错了什么吗 var AppRouter = Backbone.Router.extend({ contentView: null, routes: { 'welcome': 'welcomeAction',

我有以下一组视图和路由器,当页面第一次显示时,在路由器的“初始化”方法中导航的“欢迎”视图也不可见-渲染方法被调用,但元素没有更新。如果导航到另一个视图(hashbang),然后返回,我可以看到初始视图

有人知道我做错了什么吗

 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的内容将被替换-当页面最初显示时呈现第一个视图时,这一切都可以接受。。。