Skip to content
This repository has been archived by the owner on Apr 12, 2024. It is now read-only.

Animate crash: Cannot read property 'runner' of undefined in 1.4.0 #11992

Closed
robertftw opened this issue Jun 1, 2015 · 48 comments · Fixed by #13424
Closed

Animate crash: Cannot read property 'runner' of undefined in 1.4.0 #11992

robertftw opened this issue Jun 1, 2015 · 48 comments · Fixed by #13424

Comments

@robertftw
Copy link

TypeError: Cannot read property 'runner' of undefined
    at angular-animate.js:2330
    at forEach (angular.js:336)
    at closeChildAnimations (angular-animate.js:2325)
    at queueAnimation (angular-animate.js:2148)
    at Object.$$AnimateQueueProvider.$get.push (angular-animate.js:2040)
    at Object.$AnimateProvider.$get.leave (angular.js:5200)
    at cleanupLastView (angular-route.js:913)
    at angular-route.js:942
    at publicLinkFn (angular.js:7387)
    at $get.boundTranscludeFn (angular.js:7533)`

I get it when using it with the following CSS:

.hide-fade.ng-hide-add, .hide-fade.ng-hide-remove {
  -webkit-transition:all linear 0.3s;
  -moz-transition:all linear 0.3s;
  -o-transition:all linear 0.3s;
  transition:all linear 0.3s;
  display:block!important;
}
.hide-fade.ng-hide-add.ng-hide-add-active,
.hide-fade.ng-hide-remove {
  opacity:0;
}
.hide-fade.ng-hide-add,
.hide-fade.ng-hide-remove.ng-hide-remove-active {
  opacity:1;
}

Does not happen while using 1.3.15

@Narretz
Copy link
Contributor

Narretz commented Jun 1, 2015

Can you please provide a reproduction in a plunker or similar?

@robertftw
Copy link
Author

I'll try, but might be difficult due to I found it in a large enterprise app when I updated to 1.4.0 so I had to revert back to 1.3.15 again.

@mafrost
Copy link

mafrost commented Jun 4, 2015

I have the same issue in my large app when upgrading to 1.4.0, using ui-router if that could matter.

@parliament718
Copy link

Yup I get the same issue. Just upgraded to 1.4 recently. I can barely reproduce it in my own app (happens only sometimes for the same test case), but here's my setup:


.page-animate {
  position: absolute;
  background: #fafafa;
  @include transition(padding-top 0.3s ease-in-out, left 0.3s ease-in-out);

  &.ng-leave {
    display: none;
  }
  &.ng-enter {
    left: 100%;
  }

  &.ng-enter.ng-enter-active {
    left: 0;
  }
}

<div ng-view class="page-animate"></div>


@Kerumen
Copy link

Kerumen commented Jul 14, 2015

I'm experiencing the same issue with UI-Router, Angular Material and Flexslider included in my app.
It's only appearing when Flexslider is loaded on a page so it could be related to Flexslider. Do you guys have Flexslider in your app?

EDIT: Fixed it by desactivate ngAnimate on the Flexslider ($animate.enabled(false, el);)

@Narretz
Copy link
Contributor

Narretz commented Sep 19, 2015

Is this still an issue with the latest 1.4.6?

@robertftw
Copy link
Author

@Narretz Seems to be fixed now!

@Narretz
Copy link
Contributor

Narretz commented Sep 22, 2015

@robertftw Great, I'll close this then!

@Narretz Narretz closed this as completed Sep 22, 2015
@Emnalyeriar
Copy link

Sorry but this doesn't seem to be fixed. It just occured in my project.
Tried different angular and angular animate versions but the bug occurs in all versions combinations I tested.
The problem is I have a translate animation on ui-view just like here and inside ui-view I have html section elements that have their own translate and transition css rules. When I turn off one or another it works fine but when both css animations are declared I get this error:

TypeError: Cannot read property 'runner' of undefined
at angular-animate.js:2330
at forEach (angular.js:336)
at closeChildAnimations (angular-animate.js:2325)
at queueAnimation (angular-animate.js:2148)
at Object.and.$get.data.push (angular-animate.js:2040)
at Object.$provide.$get.afterElement.leave (angular.js:5200)
at Object.scope.leave (angular-ui-router.js:3890)
at cleanupLastView (angular-ui-router.js:3941)
at angular-ui-router.js:3969
at publicLinkFn (angular.js:7387)

Tested on 1.4 and 1.4.6, ui router 0.2.15.

@Emnalyeriar
Copy link

Found out that it works fine with this version combination: [email protected], [email protected] and [email protected] - tbh no idea why.

@robertftw
Copy link
Author

@Narretz Sorry it's still there but happens more rarely now in 1.4.6.

@Narretz
Copy link
Contributor

Narretz commented Sep 29, 2015

That's bad. But we still need a demo, otherwise it's impossible to fix. Maybe another module (slider) uses $animate in a bad way?

@Emnalyeriar
Copy link

I'll try to recreate this bug later and post it on jsbin or something.

@igorhart
Copy link

+1 Happens to me as well (1.4.5)

My temporary (tested) fix:
runner_fix

Good luck!

@roosnic1
Copy link

I have this error in angularjs 1.4.7 with angular-animate 1.4.7 and can reproduce it. I also use the angular-ui-router 0.2.14 in my web app.

I have a ul list with the following a tag:

<a ng-click="changeTabById(tab.id, tab.title)" >{{ tab.title }}</a>

and further down in the same html file the following tag which gets the content from the sub routes from the $stateProvider.

<section ui-view></section>

The function changeTabById(id) executes a $state.go(...)

function changeTabById(id) {
    $scope.currentTabId = id;
    var cs = appCampaignService.getCampaignSettings();
    $state.go(id, {
        campaign_id: $scope.campaignInfo.id,
        date_from: (cs.startDate) ? cs.startDate.format('YYYY-MM-DD') : moment($scope.campaignInfo.start_date).format('YYYY-MM-DD'),
        date_to: (cs.endDate) ? cs.endDate.format('YYYY-MM-DD') : moment().subtract(1, 'days').format('YYYY-MM-DD'),
        campaign_ids: cs.relatedCampaigns.join(',')
    });
}

Now comes the interesting part. The error only occurs if $state.go(id,...) get's called twice with the same id. But once the error got thrown it get's thrown for every other $state change.

@Narretz Could you reopen this issue?

@Narretz
Copy link
Contributor

Narretz commented Oct 29, 2015

Hi @roosnic1 yes I will reopen the issue. Can you do two things for me:

  1. Open an issue about this in the ui-router repo. It's possible that they need to adjust their code for 1.4.x
  2. Put a demo of the problem occuring inside a plnkr.com or similar. This is important! If we don't have a reproduction, it's very difficult to fix a bug.

@Narretz Narretz reopened this Oct 29, 2015
@Narretz Narretz modified the milestones: 1.4.x, Purgatory Oct 29, 2015
@chino23
Copy link

chino23 commented Nov 6, 2015

I have the same issue.

The fix from @iskuhar works for me.

it seems when switching views (but to the same view with ui-router, just different stateParams) it tries to kill the animations that are not there anymore. That happens when I try to load another view before it has fully loaded if it's big html inside.

@weisk
Copy link

weisk commented Nov 9, 2015

+1

@jcicero518
Copy link

The same issue happens for me when switching between tabbed ui-views. It only happens when switching from a view that has a select element with ng-repeated options. I'm guessing the additional scopes created by ng-repeat may be part of it, but not sure yet.

This quick hack works (for me anyways) if you don't have a lot of time (v 1.4.7):

switch (state) {
     case RUNNING_STATE:
         if (typeof animationDetails !== undefined) {
            animationDetails.runner.end();
            /* falls through */
         }
 .......

Sorry about the formatting issues, some of the MarkDown syntax escapes me at the moment.

This is similar to @iskuhar's, but checks to make sure animationDetails is still defined.

Basically it picks up on an animation in the RUNNING_STATE and ends it with animationDetails.runner.end() - But it tries to run through it a second time and by then animationDetails is no longer defined, hence the conditional check.

This is for angular-animate.js v.1.4.7.

If people are still experiencing this I can add a plunk.

tarabet pushed a commit to tarabet/gulp-unison-frontEnd that referenced this issue Nov 20, 2015
@mydnic
Copy link

mydnic commented Nov 25, 2015

@jcicero518 How exactly do you implement your code snippet ? I encounter the same error in my application (v1.4.8).

@seza443
Copy link

seza443 commented Nov 27, 2015

@Narretz
Copy link
Contributor

Narretz commented Nov 30, 2015

@seza443 Thanks! However, I can't see / force the error in the plnkr. What do I have to do to make the error appear?

@seza443
Copy link

seza443 commented Nov 30, 2015

@Narretz

  1. We start at the /page1 page
  2. Going to the /home page works fine and the carousel appears
  3. Navigating to any page cause the 'runner' error (in the console log of the browser)

@Narretz
Copy link
Contributor

Narretz commented Nov 30, 2015

Ok, now I see it.

@weisk
Copy link

weisk commented Dec 1, 2015

Thanks @seza443 , that was exactly my problem too, using Slick.js

Narretz added a commit to Narretz/angular.js that referenced this issue Dec 1, 2015
… them

During parent structural animations, ongoing animations on child elements
are closed. These children are looked up by checking the data-ng-animate
attribute. If an element is the clone of an animating element,
it might have this attribute, but no animation runner associated with it,
so we need to ignore it.

Fixes angular#11992
Closes angular#13423
Narretz added a commit to Narretz/angular.js that referenced this issue Dec 1, 2015
… them

During parent structural animations, ongoing animations on child elements
are closed. These children are looked up by checking the data-ng-animate
attribute. If an element is the clone of an animating element,
it might have this attribute, but no animation runner associated with it,
so we need to ignore it.

Fixes angular#11992
Closes angular#13424
@jcicero518
Copy link

@seza443 - Nice job. I think your fix nails it. That's something else that our apps have in common - they use Slick Slider.

@Narretz
Copy link
Contributor

Narretz commented Dec 1, 2015

Yes, thanks to @seza443 , especially for the demo and @iskuhar who was the first to find the fix. The fix will hopefully make it into the next releases (1.4.8 / 1.5.0-rc.1).
This seems to happen very often with sliders, there are at least 3 mentioned in this thread. In the case of slick it happens because the repeat elements are cloned, and the clones still have animation indicators on them, which confuses ngAnimate.

@jcicero518
Copy link

@Narretz - When you say the clones still have animation indicators, are you talking about the "data-ng-animate" attributes they are given? I haven't done all that much with ng-animate yet so much of its internals are still a bit of a mystery.

Narretz added a commit to Narretz/angular.js that referenced this issue Dec 2, 2015
During parent structural animations, ongoing animations on child elements
are closed. These child elements are identified by their data-ng-animate
attribute. If an element is the clone of an animating element,
it might have this attribute, but no animation runner associated with it,
so we need to ignore it.

Fixes angular#11992
Closes angular#13424
Narretz added a commit to Narretz/angular.js that referenced this issue Dec 2, 2015
During parent structural animations, ongoing animations on child elements
are closed. These child elements are identified by their data-ng-animate
attribute. If an element is the clone of an animating element,
it might have this attribute, but no animation runner associated with it,
so we need to ignore it.

Fixes angular#11992
Closes angular#13424
Narretz added a commit that referenced this issue Dec 2, 2015
During parent structural animations, ongoing animations on child elements
are closed. These child elements are identified by their data-ng-animate
attribute. If an element is the clone of an animating element,
it might have this attribute, but no animation runner associated with it,
so we need to ignore it.

Fixes #11992
Closes #13424
@Narretz
Copy link
Contributor

Narretz commented Dec 2, 2015

@jcicero518 Yes, that is exactly the problem. This is how ngAnimate tracks which elements have running animations.

@chino23
Copy link

chino23 commented Dec 3, 2015

Thanks a lot @Narretz ! glad to see this fixed.

@jeffhuys
Copy link

@seza443 Thank you so much. This helped me a lot. How did you debug this?

@brniamut
Copy link

Thank you @seza443 this fixed our webapp! Much thanks!

@seza443
Copy link

seza443 commented Dec 16, 2015

You welcome :)
@jeffhuys desesperate attempt...

@chino23
Copy link

chino23 commented Dec 17, 2015

the fix made it to 1.5 rc0 already.

hope they'll push out 1.4.9 soon

@PLPeeters
Copy link

Are there any plans to push this to 1.4.9 anytime soon? This is breaking our application and we'd prefer to avoid having to manually apply the fix.

@Narretz
Copy link
Contributor

Narretz commented Jan 12, 2016

There was an issue with the release process which delayed 1.4.9. We plan to release it this week.

@MarkPieszak
Copy link
Member

Also happening on 1.4.9 with bootstrap UI (latest version)
This will get patched in a minor bug fix release in 1.4.9 I'm guessing? @Narretz
Appreciate it! (using the patch above for now)

@Narretz
Copy link
Contributor

Narretz commented Jan 22, 2016

@mcpDESIGNS This is fixed in 1.4.9, I just checked.

@MarkPieszak
Copy link
Member

Very strange! Okay thank you Narretz. It seemed to go away when I went down to 1.4.6, and happened when I upgraded. Must be some strange cache issue on my end. Thanks again! My mistake.

@mydnic
Copy link

mydnic commented Jan 25, 2016

👍 1.4.9 works fine ! Thanks guys

kkirsche added a commit to kkirsche/kibana that referenced this issue Feb 21, 2016
<a name="1.4.9"></a>
# 1.4.9 implicit-superannuation (2016-01-21)

## Bug Fixes

- **Animation**
  - ensure that animate promises resolve when the document is hidden
  ([9a60408c](angular/angular.js@9a60408))
  - do not trigger animations if the document is hidden
  ([09f6061a](angular/angular.js@09f6061),
   [elastic#12842](angular/angular.js#12842), [elastic#13776](angular/angular.js#13776))
  - only copy over the animation options once
  ([2fc954d3](angular/angular.js@2fc954d),
   [elastic#13722](angular/angular.js#13722), [elastic#13578](angular/angular.js#13578))
  - allow event listeners on document in IE
  ([5ba4419e](angular/angular.js@5ba4419),
   [elastic#13548](angular/angular.js#13548), [elastic#13696](angular/angular.js#13696))
  - allow removing classes that are added by a running animation
  ([6c4581fc](angular/angular.js@6c4581f),
   [elastic#13339](angular/angular.js#13339), [elastic#13380](angular/angular.js#13380), [elastic#13414](angular/angular.js#13414), [elastic#13472](angular/angular.js#13472), [elastic#13678](angular/angular.js#13678))
  - do not use `event.timeStamp` anymore for time tracking
  ([620a20d1](angular/angular.js@620a20d),
   [elastic#13494](angular/angular.js#13494), [elastic#13495](angular/angular.js#13495))
  - ignore children without animation data when closing them
  ([be01cebf](angular/angular.js@be01ceb),
   [elastic#11992](angular/angular.js#11992), [elastic#13424](angular/angular.js#13424))
  - do not alter the provided options data
  ([7a81e6fe](angular/angular.js@7a81e6f),
   [elastic#13040](angular/angular.js#13040), [elastic#13175](angular/angular.js#13175))
  - correctly handle `$animate.pin()` host elements
  ([a985adfd](angular/angular.js@a985adf),
   [elastic#13783](angular/angular.js#13783))
  - allow animations when pinned element is parent element
  ([4cb8ac61](angular/angular.js@4cb8ac6),
   [elastic#13466](angular/angular.js#13466))
  - allow enabled children to animate on disabled parents
  ([6d85f24e](angular/angular.js@6d85f24),
   [elastic#13179](angular/angular.js#13179), [elastic#13695](angular/angular.js#13695))
  - correctly access `minErr`
  ([0c1b54f0](angular/angular.js@0c1b54f))
  - ensure animate runner is the same with and without animations
  ([937942f5](angular/angular.js@937942f),
   [elastic#13205](angular/angular.js#13205), [elastic#13347](angular/angular.js#13347))
  - remove animation end event listeners on close
  ([d9157849](angular/angular.js@d915784),
   [elastic#13672](angular/angular.js#13672))
  - consider options.delay value for closing timeout
  ([592bf516](angular/angular.js@592bf51),
   [elastic#13355](angular/angular.js#13355), [elastic#13363](angular/angular.js#13363))
- **$controller:** allow identifiers containing `$`
  ([2563ff7b](angular/angular.js@2563ff7),
   [elastic#13736](angular/angular.js#13736))
- **$http:** throw if url passed is not a string
  ([c5bf9dae](angular/angular.js@c5bf9da),
   [elastic#12925](angular/angular.js#12925), [elastic#13444](angular/angular.js#13444))
- **$parse:** handle interceptors with `undefined` expressions
  ([7bb2414b](angular/angular.js@7bb2414))
- **$resource:** don't allow using promises as `timeout` and log a warning
  ([47486524](angular/angular.js@4748652))
- **formatNumber:** cope with large and small number corner cases
  ([9c49eb13](angular/angular.js@9c49eb1),
   [elastic#13394](angular/angular.js#13394), [elastic#8674](angular/angular.js#8674), [elastic#12709](angular/angular.js#12709), [elastic#8705](angular/angular.js#8705), [elastic#12707](angular/angular.js#12707), [elastic#10246](angular/angular.js#10246), [elastic#10252](angular/angular.js#10252))
- **input:**
  - fix URL validation being too strict
  ([6610ae81](angular/angular.js@6610ae8),
   [elastic#13528](angular/angular.js#13528), [elastic#13544](angular/angular.js#13544))
  - add missing chars to URL validation regex
  ([2995b54a](angular/angular.js@2995b54),
   [elastic#13379](angular/angular.js#13379), [elastic#13460](angular/angular.js#13460))
- **isArrayLike:** recognize empty instances of an Array subclass
  ([323f9ab7](angular/angular.js@323f9ab),
   [elastic#13560](angular/angular.js#13560), [elastic#13708](angular/angular.js#13708))
- **ngInclude:** do not compile template if original scope is destroyed
  ([9590bcf0](angular/angular.js@9590bcf))
- **ngOptions:**
  - don't skip `optgroup` elements with `value === ''`
  ([85e392f3](angular/angular.js@85e392f),
   [elastic#13487](angular/angular.js#13487), [elastic#13489](angular/angular.js#13489))
  - don't `$dirty` multiple select after compilation
  ([f163c905](angular/angular.js@f163c90),
   [elastic#13211](angular/angular.js#13211), [elastic#13326](angular/angular.js#13326))
- **select:** re-define `ngModelCtrl.$render` in the `select` directive's postLink function
  ([529b2507](angular/angular.js@529b250),
   [elastic#13583](angular/angular.js#13583), [elastic#13583](angular/angular.js#13583), [elastic#13663](angular/angular.js#13663))

## Minor Features

- **ngLocale:** add support for standalone months
  ([54c4041e](angular/angular.js@54c4041),
   [elastic#3744](angular/angular.js#3744), [elastic#10247](angular/angular.js#10247), [elastic#12642](angular/angular.js#12642), [elastic#12844](angular/angular.js#12844))
- **ngMock:** add support for `$animate.closeAndFlush()`
  ([512c0811](angular/angular.js@512c081))

## Performance Improvements

- **ngAnimate:** speed up `areAnimationsAllowed` check
  ([2d3303dd](angular/angular.js@2d3303d))

## Breaking Changes

While we do not deem the following to be a real breaking change we are highlighting it here in the
changelog to ensure that it does not surprise anyone.

- **$resource:** due to [47486524](angular/angular.js@4748652),

**Possible breaking change** for users who updated their code to provide a `timeout`
promise for a `$resource` request in version v1.4.8.

Up to v1.4.7 (included), using a promise as a timeout in `$resource`, would silently
fail (i.e. have no effect).

In v1.4.8, using a promise as timeout would have the (buggy) behaviour described
in angular/angular.js#12657 (comment).
(I.e. it will work as expected for the first time you resolve the promise and will
cancel all subsequent requests after that - one has to re-create the resource
class. This was not documented.)

With this change, using a promise as timeout in v1.4.9 onwards is not allowed.
It will log a warning and ignore the timeout value.

If you need support for cancellable `$resource` actions, you should upgrade to
version 1.5 or higher.

<a name="1.4.8"></a>
# 1.4.8 ice-manipulation (2015-11-19)

## Bug Fixes

- **$animate:** ensure leave animation calls `close` callback
  ([6bd6dbff](angular/angular.js@6bd6dbf),
   [elastic#12278](angular/angular.js#12278), [elastic#12096](angular/angular.js#12096), [elastic#13054](angular/angular.js#13054))
- **$cacheFactory:** check key exists before decreasing cache size count
  ([2a5a52a7](angular/angular.js@2a5a52a),
   [elastic#12321](angular/angular.js#12321), [elastic#12329](angular/angular.js#12329))
- **$compile:**
  - bind all directive controllers correctly when using `bindToController`
  ([5d8861fb](angular/angular.js@5d8861f),
   [elastic#11343](angular/angular.js#11343), [elastic#11345](angular/angular.js#11345))
  - evaluate against the correct scope with bindToController on new scope
  ([b9f7c453](angular/angular.js@b9f7c45),
   [elastic#13021](angular/angular.js#13021), [elastic#13025](angular/angular.js#13025))
  - fix scoping of transclusion directives inside replace directive
  ([74da0340](angular/angular.js@74da034),
   [elastic#12975](angular/angular.js#12975), [elastic#12936](angular/angular.js#12936), [elastic#13244](angular/angular.js#13244))
- **$http:** apply `transformResponse` even when `data` is empty
  ([c6909464](angular/angular.js@c690946),
   [elastic#12976](angular/angular.js#12976), [elastic#12979](angular/angular.js#12979))
- **$location:** ensure `$locationChangeSuccess` fires even if URL ends with `#`
  ([6f8ddb6d](angular/angular.js@6f8ddb6),
   [elastic#12175](angular/angular.js#12175), [elastic#13251](angular/angular.js#13251))
- **$parse:** evaluate once simple expressions only once
  ([e4036824](angular/angular.js@e403682),
   [elastic#12983](angular/angular.js#12983), [elastic#13002](angular/angular.js#13002))
- **$resource:** allow XHR request to be cancelled via a timeout promise
  ([7170f9d9](angular/angular.js@7170f9d),
   [elastic#12657](angular/angular.js#12657), [elastic#12675](angular/angular.js#12675), [elastic#10890](angular/angular.js#10890), [elastic#9332](angular/angular.js#9332))
- **$rootScope:** prevent IE9 memory leak when destroying scopes
  ([87b0055c](angular/angular.js@87b0055),
   [elastic#10706](angular/angular.js#10706), [elastic#11786](angular/angular.js#11786))
- **Angular.js:** fix `isArrayLike` for unusual cases
  ([70edec94](angular/angular.js@70edec9),
   [elastic#10186](angular/angular.js#10186), [elastic#8000](angular/angular.js#8000), [elastic#4855](angular/angular.js#4855), [elastic#4751](angular/angular.js#4751), [elastic#10272](angular/angular.js#10272))
- **isArrayLike:** handle jQuery objects of length 0
  ([d3da55c4](angular/angular.js@d3da55c))
- **jqLite:**
  - deregister special `mouseenter` / `mouseleave` events correctly
  ([22f66025](angular/angular.js@22f6602),
   [elastic#12795](angular/angular.js#12795), [elastic#12799](angular/angular.js#12799))
  - ensure mouseenter works with svg elements on IE
  ([c1f34e8e](angular/angular.js@c1f34e8),
   [elastic#10259](angular/angular.js#10259), [elastic#10276](angular/angular.js#10276))
- **limitTo:** start at 0 if `begin` is negative and exceeds input length
  ([4fc40bc9](angular/angular.js@4fc40bc),
   [elastic#12775](angular/angular.js#12775), [elastic#12781](angular/angular.js#12781))
- **merge:**
  - ensure that jqlite->jqlite and DOM->DOM
  ([2f8db1bf](angular/angular.js@2f8db1b))
  - clone elements instead of treating them like simple objects
  ([838cf4be](angular/angular.js@838cf4b),
   [elastic#12286](angular/angular.js#12286))
- **ngAria:** don't add tabindex to radio and checkbox inputs
  ([59f1f4e1](angular/angular.js@59f1f4e),
   [elastic#12492](angular/angular.js#12492), [elastic#13095](angular/angular.js#13095))
- **ngInput:** change URL_REGEXP to better match RFC3987
  ([cb51116d](angular/angular.js@cb51116),
   [elastic#11341](angular/angular.js#11341), [elastic#11381](angular/angular.js#11381))
- **ngMock:** reset cache before every test
  ([91b7cd9b](angular/angular.js@91b7cd9),
   [elastic#13013](angular/angular.js#13013))
- **ngOptions:**
  - skip comments and empty options when looking for options
  ([0f58334b](angular/angular.js@0f58334),
   [elastic#12190](angular/angular.js#12190), [elastic#13029](angular/angular.js#13029), [elastic#13033](angular/angular.js#13033))
  - override select option registration to allow compilation of empty option
  ([7b2ecf42](angular/angular.js@7b2ecf4),
   [elastic#11685](angular/angular.js#11685), [elastic#12972](angular/angular.js#12972), [elastic#12968](angular/angular.js#12968), [elastic#13012](angular/angular.js#13012))

## Performance Improvements

- **$compile:** use static jquery data method to avoid creating new instances
  ([55ad192e](angular/angular.js@55ad192))
- **copy:**
  - avoid regex in `isTypedArray`
  ([19fab4a1](angular/angular.js@19fab4a))
  - only validate/clear if the user specifies a destination
  ([d1293540](angular/angular.js@d129354),
   [elastic#12068](angular/angular.js#12068))
- **merge:** remove unnecessary wrapping of jqLite element
  ([ce6a96b0](angular/angular.js@ce6a96b),
   [elastic#13236](angular/angular.js#13236))

## Breaking Changes

Signed-off-by: Kevin Kirsche <[email protected]>
@samypr100
Copy link

I'm experiencing a very similar issue. See #13215

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.