function() {

        // Update attributes.
        _.each(this.model.get('attrs'), function(attrs, selector) {
            
            // If the `filter` attribute is an object, it is in the special JointJS filter format and so
            // it becomes a special attribute and is treated separately.
            if (_.isObject(attrs.filter)) {
                
                this.findBySelector(selector).attr(_.omit(attrs, 'filter'));
                this.applyFilter(selector, attrs.filter);
                
            } else {
                
                this.findBySelector(selector).attr(attrs);
            }
        }, this);

        var vertices = this.model.get('vertices');

        if (this.model.get('manhattan')) {
            // If manhattan routing is enabled, find new vertices so that the link is orthogonally routed.
            vertices = this.findManhattanRoute(vertices);
        }

        this._firstVertex = _.first(vertices);
        this._sourcePoint = this.getConnectionPoint(
            'source',
            this.model.get('source'),
            this._firstVertex || this.model.get('target')).round();

        this._lastVertex = _.last(vertices);
        this._targetPoint = this.getConnectionPoint(
            'target',
            this.model.get('target'),
            this._lastVertex || this._sourcePoint
        );

        // Make the markers "point" to their sticky points being auto-oriented towards
        // `targetPosition`/`sourcePosition`. And do so only if there is a markup for them.
        if (this._V.markerSource) {
            this._V.markerSource.translateAndAutoOrient(
                this._sourcePoint,
                this._firstVertex || this._targetPoint,
                this.paper.viewport
            );
        }

        if (this._V.markerTarget) {
            this._V.markerTarget.translateAndAutoOrient(
                this._targetPoint,
                this._lastVertex || this._sourcePoint,
                this.paper.viewport
            );
        }

        var pathData = this.getPathData(vertices);
        // The markup needs to contain a `.connection`
        this._V.connection.attr('d', pathData);
        this._V.connectionWrap && this._V.connectionWrap.attr('d', pathData);

        //partials updates
        this.updateLabelPositions();
        this.updateToolsPosition();
        this.updateArrowheadMarkers();

        return this;
    }
function() {

        
        _.each(this.model.get('attrs'), function(attrs, selector) {
            
            
            
            if (_.isObject(attrs.filter)) {
                
                this.findBySelector(selector).attr(_.omit(attrs, 'filter'));
                this.applyFilter(selector, attrs.filter);
                
            } else {
                
                this.findBySelector(selector).attr(attrs);
            }
        }, this);

        var vertices = this.model.get('vertices');

        if (this.model.get('manhattan')) {
            
            vertices = this.findManhattanRoute(vertices);
        }

        this._firstVertex = _.first(vertices);
        this._sourcePoint = this.getConnectionPoint(
            'source',
            this.model.get('source'),
            this._firstVertex || this.model.get('target')).round();

        this._lastVertex = _.last(vertices);
        this._targetPoint = this.getConnectionPoint(
            'target',
            this.model.get('target'),
            this._lastVertex || this._sourcePoint
        );

        
        
        if (this._V.markerSource) {
            this._V.markerSource.translateAndAutoOrient(
                this._sourcePoint,
                this._firstVertex || this._targetPoint,
                this.paper.viewport
            );
        }

        if (this._V.markerTarget) {
            this._V.markerTarget.translateAndAutoOrient(
                this._targetPoint,
                this._lastVertex || this._sourcePoint,
                this.paper.viewport
            );
        }

        var pathData = this.getPathData(vertices);
        
        this._V.connection.attr('d', pathData);
        this._V.connectionWrap && this._V.connectionWrap.attr('d', pathData);

        
        this.updateLabelPositions();
        this.updateToolsPosition();
        this.updateArrowheadMarkers();

        return this;
    }
function ( ) { // Update attributes. _ . each ( this . model . get ( 'attrs' ) , function ( attrs , selector ) { // If the `filter` attribute is an object, it is in the special JointJS filter format and so // it becomes a special attribute and is treated separately. if ( _ . isObject ( attrs . filter ) ) { this . findBySelector ( selector ) . attr ( _ . omit ( attrs , 'filter' ) ) ; this . applyFilter ( selector , attrs . filter ) ; } else { this . findBySelector ( selector ) . attr ( attrs ) ; } } , this ) ; var vertices = this . model . get ( 'vertices' ) ; if ( this . model . get ( 'manhattan' ) ) { // If manhattan routing is enabled, find new vertices so that the link is orthogonally routed. vertices = this . findManhattanRoute ( vertices ) ; } this . _firstVertex = _ . first ( vertices ) ; this . _sourcePoint = this . getConnectionPoint ( 'source' , this . model . get ( 'source' ) , this . _firstVertex || this . model . get ( 'target' ) ) . round ( ) ; this . _lastVertex = _ . last ( vertices ) ; this . _targetPoint = this . getConnectionPoint ( 'target' , this . model . get ( 'target' ) , this . _lastVertex || this . _sourcePoint ) ; // Make the markers "point" to their sticky points being auto-oriented towards // `targetPosition`/`sourcePosition`. And do so only if there is a markup for them. if ( this . _V . markerSource ) { this . _V . markerSource . translateAndAutoOrient ( this . _sourcePoint , this . _firstVertex || this . _targetPoint , this . paper . viewport ) ; } if ( this . _V . markerTarget ) { this . _V . markerTarget . translateAndAutoOrient ( this . _targetPoint , this . _lastVertex || this . _sourcePoint , this . paper . viewport ) ; } var pathData = this . getPathData ( vertices ) ; // The markup needs to contain a `.connection` this . _V . connection . attr ( 'd' , pathData ) ; this . _V . connectionWrap && this . _V . connectionWrap . attr ( 'd' , pathData ) ; //partials updates this . updateLabelPositions ( ) ; this . updateToolsPosition ( ) ; this . updateArrowheadMarkers ( ) ; return this ; }
Updating --------- Default is to process the `attrs` object and set attributes on subelements based on the selectors.
Updating --------- Default is to process the attrs object and set attributes on subelements based on the selectors .