Make WordPress Core

Changeset 31045


Ignore:
Timestamp:
01/04/2015 05:24:24 AM (10 years ago)
Author:
wonderboymusic
Message:

In Media Views, use this.listenTo( this.model, .... ) instead of this.model.on( .... ) to fix garbage collection and to avoid "ghost views."

Fixes #30896.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/js/media-views.js

    r31039 r31045  
    46604660            }, this );
    46614661
    4662             this.model.on( 'change', this.render, this );
     4662            this.listenTo( this.model, 'change', this.render );
    46634663        },
    46644664        /**
     
    51195119
    51205120            if ( options.rerenderOnModelChange ) {
    5121                 this.model.on( 'change', this.render, this );
     5121                this.listenTo( this.model, 'change', this.render );
    51225122            } else {
    5123                 this.model.on( 'change:percent', this.progress, this );
    5124             }
    5125             this.model.on( 'change:title', this._syncTitle, this );
    5126             this.model.on( 'change:caption', this._syncCaption, this );
    5127             this.model.on( 'change:artist', this._syncArtist, this );
    5128             this.model.on( 'change:album', this._syncAlbum, this );
     5123                this.listenTo( this.model, 'change:percent', this.progress );
     5124            }
     5125            this.listenTo( this.model, 'change:title', this._syncTitle );
     5126            this.listenTo( this.model, 'change:caption', this._syncCaption );
     5127            this.listenTo( this.model, 'change:artist', this._syncArtist );
     5128            this.listenTo( this.model, 'change:album', this._syncAlbum );
    51295129
    51305130            // Update the selection.
    5131             this.model.on( 'add', this.select, this );
    5132             this.model.on( 'remove', this.deselect, this );
     5131            this.listenTo( this.model, 'add', this.select );
     5132            this.listenTo( this.model, 'remove', this.deselect );
    51335133            if ( selection ) {
    51345134                selection.on( 'reset', this.updateSelect, this );
    51355135                // Update the model's details view.
    5136                 this.model.on( 'selection:single selection:unsingle', this.details, this );
     5136                this.listenTo( this.model, 'selection:single selection:unsingle', this.details );
    51375137                this.details( this.model, this.controller.state().get('selection') );
    51385138            }
     
    60166016            }, this ).sortBy('priority').pluck('el').value() );
    60176017
    6018             this.model.on( 'change', this.select, this );
     6018            this.listenTo( this.model, 'change', this.select );
    60196019            this.select();
    60206020        },
     
    68196819        initialize: function() {
    68206820            this.model = this.model || new Backbone.Model();
    6821             this.model.on( 'change', this.updateChanges, this );
     6821            this.listenTo( this.model, 'change', this.updateChanges );
    68226822        },
    68236823
     
    69366936            // Call 'initialize' directly on the parent class.
    69376937            media.view.Settings.prototype.initialize.apply( this, arguments );
    6938             this.model.on( 'change:link', this.updateLinkTo, this );
     6938            this.listenTo( this.model, 'change:link', this.updateLinkTo );
    69396939
    69406940            if ( attachment ) {
     
    71867186
    71877187        initialize: function() {
    7188             this.model.on( 'change:compat', this.render, this );
     7188            this.listenTo( this.model, 'change:compat', this.render );
    71897189        },
    71907190        /**
     
    72867286            this.views.set([ this.url ]);
    72877287            this.refresh();
    7288             this.model.on( 'change:type', this.refresh, this );
    7289             this.model.on( 'change:loading', this.loading, this );
     7288            this.listenTo( this.model, 'change:type', this.refresh );
     7289            this.listenTo( this.model, 'change:loading', this.loading );
    72907290        },
    72917291
     
    73737373            this.$el.append([ this.input, this.spinner ]);
    73747374
    7375             this.model.on( 'change:url', this.render, this );
     7375            this.listenTo( this.model, 'change:url', this.render );
    73767376
    73777377            if ( this.model.get( 'url' ) ) {
     
    74997499             */
    75007500            media.view.Settings.AttachmentDisplay.prototype.initialize.apply( this, arguments );
    7501             this.model.on( 'change:url', this.updateImage, this );
     7501            this.listenTo( this.model, 'change:url', this.updateImage );
    75027502        },
    75037503
Note: See TracChangeset for help on using the changeset viewer.