繁体   English   中英

重新渲染视图

[英]Re-render a view

在事件发生后重新渲染视图的最佳方法是什么(例如,提交便笺)。 在下面的代码中,我想重新渲染视图以显示刚刚添加的注释。

var NotesView = SectionBaseView.extend({
        model: app.models.Note,
        events: {
            'submit': 'Notes'
        },
        Notes: function (e) {
            e.preventDefault();

            var details = new this.model($('form').serializeObject());
            details.url = '/email/Notes';

            details
                .save()
                .done(function () {                
                    app.notifySuccess('Note added successfully.');
                });           
            views['#Notes'].render();                    
        }       
    });

Notes视图在document.ready函数中初始化如下:

views['#Notes'] = new NotesView({ el: '#Notes', template: app.templates.Notes });

我尝试使用views ['#Notes']。render(); 但这似乎不起作用。

渲染的默认实现是无操作。 用您的代码覆盖此功能,该代码从模型数据中呈现视图模板,并使用新的HTML更新this.el。 一个好的约定是在渲染结束时返回此值以启用链接调用。 文件

var NotesView = SectionBaseView.extend({
        model: app.models.Note,
        events: {
            'submit': 'Notes'
        },

        render : function(){
              //your code
              return this;
        },

        Notes: function (e) {
            var that = this;
            e.preventDefault();

            var details = new this.model($('form').serializeObject());
            details.url = '/email/Notes';

            details
                .save()
                .done(function () {                
                    app.notifySuccess('Note added successfully.');
                });           
            that.render();                    
        }       
    });

在document.ready上

views['#Notes'] = new NotesView({ el: '#Notes', template: app.templates.Notes });
views['#Notes'].render();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM