0

イベントが発生した後にビューを再レンダリングする最良の方法は何ですか (メモの送信など)。以下のコードでは、ビューを再レンダリングして、追加したばかりのメモを表示したいと考えています。

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(); を使ってみた しかし、これは機能していないようです。

4

1 に答える 1

0

render のデフォルトの実装はノーオペレーションです。モデル データからビュー テンプレートをレンダリングするコードでこの関数をオーバーライドし、新しい HTML で this.el を更新します。render の最後にこれを返して、連鎖呼び出しを有効にすることをお勧めします。ドキュメント

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();
于 2012-09-21T04:29:42.510 に答える