Angular.js: рдХреЛрдгреАрдп-рдирдХрд▓реА 1.5.1 рдЯрд╛рдЗрдкрд░: рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЛрдИ рд░рдЪрдирд╛рдХрд╛рд░ рдирд╣реАрдВ рд╣реИ ('angular.element.cleanData (cleanUpNodes)' рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди)

рдХреЛ рдирд┐рд░реНрдорд┐рдд 16 рдорд╛рд░реНрдЪ 2016  ┬╖  67рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: angular/angular.js

рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдг рдХреЛрдгреАрдп-рдирдХрд▓реА 1.5.0 рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди 1.5.1 рдХреЗ рд╕рд╛рде рд╕рднреА рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛрддреЗ рд╣реИрдВ:
TypeError: undefined is not a constructor (evaluating 'angular.element.cleanData(cleanUpNodes)') in ../node_modules/angular-mocks/angular-mocks.js (line 2776) $$cleanup@../node_modules/angular-mocks/angular-mocks.js:2776:32 $$afterEach@../node_modules/angular-mocks/angular-mocks.js:2746:23

investigation more info regression bug

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореБрдЭреЗ v1.5.2 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреЗ рдмрд╛рдж рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рднреА рджреЗрдЦрд╛ рдЧрдпрд╛ рдерд╛ред 2776 рдХреЛрдгреАрдп-рдореЙрдХрдЬреЗрдЬ рд╕реЗ рдмрджрд▓рддреА рд▓рд╛рдЗрди:
angular.element.cleanData(cleanUpNodes);
рд╕реЗрд╡рд╛:
if (angular.element.cleanData) angular.element.cleanData(cleanUpNodes);

рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░реЗрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░рдгреЛрдВ рд╕реЗ angular.element рдХреА рдЬрд╛рд╕реВрд╕реА рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рд╕рднреА 67 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдпрд╣ рдЕрдЬреАрдм рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕ рдмрд┐рдЯ рдХреЛрдб рдореЗрдВ рдХрд┐рд╕реА рднреА рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рд╢рд╛рдпрдж рдЖрдк рдХреБрдЫ рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдПрдХ рдЕрд╕рдлрд▓ рдкрд░реАрдХреНрд╖рд╛ рдХреА рдПрдХ рдХреЙрдкреА, рдЕрдзрд┐рдорд╛рдирддрдГ рдПрдХ рдЬрд┐рд╕реЗ рд╣рдо рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣рд╛рдВ рдЖрдк рдПрдХ рдкрд░реАрдХреНрд╖рдг рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ (рдХреЗрд╡рд▓ рд╕рдВрд╕реНрдХрд░рдг 1.5.1, 1.5.0 рдХреЗ рд▓рд┐рдП рдареАрдХ рд╣реИ)ред
рдЯреЗрд╕реНрдЯ рд░рдирд░ рдХрд░реНрдо, рдЯреЗрд╕реНрдЯ рдлреНрд░реЗрдорд╡рд░реНрдХ рдЬреИрд╕реНрдореАрдиред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗрдЯрдЕрдк "рдлрд╛рдЙрдВрдбреЗрд╢рди рдлреЙрд░ рдПрдкреНрд╕"
https://github.com/HamburgOOU/hoou-webapp/blob/master/test/controllerTest/AboutControllerTest.js

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдпреВрдЖрдИ-рд░рд╛рдЙрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдХреНрдпрд╛ рдпрд╣ рд╕рд╣реА рд╣реИ?
рдХреНрдпрд╛ рдЖрдк рдпрд╣рд╛рдВ рдЪрд▓рдиреЗ рд╡рд╛рд▓рд╛ рдкрд░реАрдХреНрд╖рдг рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: http://plnkr.co/edit/tpl : vojSWqpk1yBjQbbPeXRH?

рдПрдХ рд╕реБрдЭрд╛рд╡ рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг рд╕реЗ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ (рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд┐рд░реНрднрд░рддрд╛ рд╣реИ)

рд╣рд╛рдВ, рдХреЛрдгреАрдп-рдпреВрдЖрдИ-рд░рд╛рдЙрдЯрд░ (0.2.18) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ред
рдЯреНрд░реЙрдореЛрд░реЛ I рдирд┐рд░реНрднрд░рддрд╛ рдЦреЛрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛ рдЬреЛ рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред

+1, рдореБрдЭреЗ рдПрдХ рдкреНрд░рджрд╛рддрд╛ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рдорд╛рди рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рд╣реЛ рд░рд╣реА рд╣реИред

TypeError: 'рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд' рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИ ('angular.element.cleanData (cleanUpNodes)' рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди))
at ../node_modules/angular-mocks/angular-mocks.js:2776
at ../node_modules/angular-mocks/angular-mocks.js:2746

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдпрд╣ рддреНрд░реБрдЯрд┐ 1.5.1 рдХреЗ рд╕рд╛рде рд╣реЛрддреА рд╣реИ, рдореИрдВрдиреЗ 1.5.0 рдкрд░ рд╡рд╛рдкрд╕ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рдФрд░ рд╕рдм рдХреБрдЫ рдлрд┐рд░ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЗрд╕реЗ рдпрд╣рд╛рдБ рджреЗрдЦреЗрдВ: https://travis-ci.org/likeastore/ngDialog/builds/116420597

@petebacondarwin undefined is not a constructor рдПрдХ рдЧреБрдкреНрдд рддреНрд░реБрдЯрд┐ рд╣реИ рдЬрдм рдЖрдк рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ Chrome рдХреЗ a.something is not a function рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред

рд╣рдореЗрдВ Angular / Mock 1.5.1 рдкрд░ рдПрдХ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИ, рдЬреЛ 1.5.0 рдкрд░ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ:

# PhantomJS
TypeError: undefined is not a constructor (evaluating 'angular.element('<div ng-app></div>').data('$injector', $injector)') 
    in /bower_components/angular-mocks/angular-mocks.js (line 2102)
    /bower_components/angular-mocks/angular-mocks.js:2102:69
    invoke@/bower_components/angular/angular.js:4443:22
    /bower_components/angular/angular.js:4261:43
    getService@/bower_components/angular/angular.js:4402:46
    invoke@/bower_components/angular/angular.js:4434:23
    /bower_components/angular/angular.js:4261:43
    getService@/bower_components/angular/angular.js:4402:46
    invoke@/bower_components/angular/angular.js:4434:23
    /bower_components/angular/angular.js:4261:43
    getService@/bower_components/angular/angular.js:4402:46
    invoke@/bower_components/angular/angular.js:4434:23
    /bower_components/angular/angular.js:4265:85
    forEach@/bower_components/angular/angular.js:336:24
    createInjector@/bower_components/angular/angular.js:4265:10
    workFn@/bower_components/angular-mocks/angular-mocks.js:2922:60

# Chrome
TypeError: angular.element(...).data is not a function
        at $get (/bower_components/angular-mocks/angular-mocks.js:2102:65)
        at Object.invoke (/bower_components/angular/angular.js:4443:17)
        at /bower_components/angular/angular.js:4261:37
        at getService (/bower_components/angular/angular.js:4402:39)
        at Object.invoke (/bower_components/angular/angular.js:4434:13)
        at /bower_components/angular/angular.js:4261:37
        at getService (/bower_components/angular/angular.js:4402:39)
        at Object.invoke (/bower_components/angular/angular.js:4434:13)
        at /bower_components/angular/angular.js:4261:37
        at getService (/bower_components/angular/angular.js:4402:39)

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдо рдХреЛрдгреАрдп рдХреЗ рд╕рд╛рде jQuery рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдпрд╣ рд╕рдм https://github.com/angular/angular.js/commit/75373dd4bdae6c6035272942c69444c386f824cd рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ

@ рдордиреАрд▓рд╛рдХреНрд╕

angular.element (...)ред рдбреЗрдЯрд╛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИ

рдХреНрдпрд╛ рдореИрдВ рдЗрд╕реЗ рд╕рд╣реА рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ angular.element(...) (рдЬреЛ рдХрд┐ Angular рд╕реЗ рдкрд╣рд▓реЗ jQuery рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдкрд░ jQuery(...) ) рдХреБрдЫ рдРрд╕рд╛ рд░рд┐рдЯрд░реНрди рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ data рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ? рдпрд╣ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк Chrome DevTools рдореЗрдВ "рдЕрд╕реНрд╡реАрдХреГрддрд┐ рдкрд░ рд╡рд┐рд░рд╛рдо" рд╕рдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░, рдЬрдм рдЖрдк рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рдорд╛рд░рддреЗ рд╣реИрдВ, рддреЛ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╢реНрди рдХреНрдпрд╛ рд╣реИрдВ:

  1. angular.element
  2. angular.element(...) (рдЬреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣реИ рдЙрд╕рдХреЗ рд╕рд╛рде рдбреЙрдЯреНрд╕ рдХреЛ рдмрджрд▓реЗрдВ)
  3. ... (рдЖрдкрдХреЗ рдкрд╛рд╕ angular.element рдореЗрдВ рдЬреЛ рдХреБрдЫ рдерд╛, рдЙрд╕рдХреЗ рд╕рд╛рде рдбреЙрдЯреНрд╕ рдХреЛ рдмрджрд▓реЗрдВ)

рдзрдиреНрдпрд╡рд╛рдж!

рд╣рдореЗрдВ рдХреЛрдгреАрдп v1.5.1 рд╕реЗ рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рд╣реИред

should update data with success with redirect
          PhantomJS 2.1.1 (Linux 0.0.0)
        TypeError: undefined is not an object (evaluating '$location.path(interpolate(nextRoute.redirectTo, nextRoute.params)).search') in /project/app/bower_components/angular-route/angular-route.js (line 601)
        commitRoute@/project/app/bower_components/angular-route/angular-route.js:601:82
        $broadcast@/project/app/bower_components/angular/angular.js:17207:33
        afterLocationChange@/project/app/bower_components/angular/angular.js:13127:28
        /project/app/bower_components/angular/angular.js:13113:32
        $eval@/project/app/bower_components/angular/angular.js:16884:28
        $digest@/project/app/bower_components/angular/angular.js:16700:36
        flush@/project/app/bower_components/angular-mocks/angular-mocks.js:1779:45
        /project/app/modules/main/partners/partners.spec.js:338:31
        invoke@/project/app/bower_components/angular/angular.js:4625:24
        workFn@/project/app/bower_components/angular-mocks/angular-mocks.js:2933:26
        Error: [$rootScope:inprog] $digest already in progress
        http://errors.angularjs.org/1.5.1/$rootScope/inprog?p0=%24digest (line 17242)
        beginPhase@/project/app/bower_components/angular/angular.js:17242:88
        $digest@/project/app/bower_components/angular/angular.js:16680:19
        flush@/project/app/bower_components/angular-mocks/angular-mocks.js:1779:45
        /project/app/modules/main/partners/partners.spec.js:385:39
        invoke@/project/app/bower_components/angular/angular.js:4625:24
        workFn@/project/app/bower_components/angular-mocks/angular-mocks.js:2933:26
        inject@/project/app/bower_components/angular-mocks/angular-mocks.js:2902:46
        /project/app/modules/main/partners/partners.spec.js:381:23
        undefined

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╣рдореЗрд╢рд╛ рдлреЗрдВрдХреА рдЬрд╛рддреА рд╣реИ рдЬрдм рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ inject() рдлрд╝рдВрдХреНрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ spyOn($location, 'path'); beforeEach рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред

describe('ctrl test', function () {
    beforeEach(inject(function ($controller, $location) {
        spyOn($location, 'path');
    }));

    describe('save()', function () {
        it('should work', function(){
            inject(function ($location) {
                // some test code
            });
        });
    });
});

@ 4kochi - рдЖрдкрдХреЛ рд╕рдорд╕реНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдПрдХ рд╕рдорд╛рд░реЛрд╣ рдореЗрдВ рдЬрд╛рд╕реВрд╕реА рдХреА рд╣реИ, рд▓реЗрдХрд┐рди рдЬрд╛рд╕реВрд╕ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, spyOn($location, path); рдЬрд╛рд╕реВрд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде $location.path рдкрджреНрдзрддрд┐ рд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрдкрд╛рдИ рдлрд╝рдВрдХреНрд╢рди undefined ред рдмрд╛рдж рдореЗрдВ рд░рд╛рдЙрдЯрд░ $location.path().search рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬреЛ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ undefined.search рдХрд╣ рд░рд╣рд╛ рд╣реИред

рдЖрдкрдХреЛ рдЬрд╛рд╕реВрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдпрд╛ рддреЛ рдПрдХ рдирдХрд▓реА рдпрд╛ рдПрдХ рдкрд╛рд╕-рдереНрд░реВ:

spyOn($location, 'path').andCallThrough();
spyOn($location, 'path').andCallFake(function(url) { return {...}; });

рдЯрд┐рдк рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж @petebacondarwin рдореБрдЭреЗ рдПрдХ рд╕рдорд╛рди рд╡рд┐рдЪрд╛рд░ рдерд╛ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ рд╡рд╣реА рдкрд░реАрдХреНрд╖рдг рдХреЛрдб рдХреЛрдгреАрдп 1.5.0 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ? рдХреНрдпрд╛ рдореИрдВ рдХреБрдЫ рднреБрд▓ рдЧрдпрд╛?

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд╣реИ рдЬрдм рдореИрдВ inject рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП

  beforeEach(inject(function($rootScope) {

  }));

@ dagda1 , рдХреНрдпрд╛ рдЖрдк https://github.com/angular/angular.js/issues/14251#issuecomment -198276079 (рд╕рд╛рде рд╣реА рддреНрд░реБрдЯрд┐ рдХреЗ рд▓рд┐рдП рд╕рдЯреАрдХ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕) рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдореБрдЭреЗ v1.5.2 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреЗ рдмрд╛рдж рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рднреА рджреЗрдЦрд╛ рдЧрдпрд╛ рдерд╛ред 2776 рдХреЛрдгреАрдп-рдореЙрдХрдЬреЗрдЬ рд╕реЗ рдмрджрд▓рддреА рд▓рд╛рдЗрди:
angular.element.cleanData(cleanUpNodes);
рд╕реЗрд╡рд╛:
if (angular.element.cleanData) angular.element.cleanData(cleanUpNodes);

рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░реЗрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░рдгреЛрдВ рд╕реЗ angular.element рдХреА рдЬрд╛рд╕реВрд╕реА рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░рдгреЛрдВ рд╕реЗ angular.element рдХреА рдЬрд╛рд╕реВрд╕реА рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рд╡рд╣ рддреНрд░реБрдЯрд┐ рдмрддрд╛рддрд╛ рд╣реИред

angular.element рдПрдХ рдмрд╣реБрдд рд╣реА рдмреБрдирд┐рдпрд╛рджреА "рд╕реБрд╡рд┐рдзрд╛" рд╣реИ рдФрд░ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд┐рд░реНрднрд░ рд╣реИред рдореИрдВ рдЗрд╕реЗ рдмрд╛рд╣рд░ рдареВрдВрдардиреЗ рдХреА рд╕рд▓рд╛рд╣ рдирд╣реАрдВ рджреВрдВрдЧрд╛ред (рдЗрд╕ рдкрд░ рдЬрд╛рд╕реВрд╕реА рдХрд░рдирд╛ рдФрд░ рдЪреАрдЬреЛрдВ рдХреЛ рдЧреБрдЬрд░рдирд╛ рдареАрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)ред

BTW, рдХреЛрдб рдХреЛ рдмрджрд▓рдХрд░ if (angular.element.cleanData) angular.element.cleanData(cleanUpNodes); рдХрд░рдиреЗ рд╕реЗ рдореЗрдореЛрд░реА рд▓реАрдХ рд╣реЛ рдЬрд╛рддреА рд╣реИ рдЬреЛ рдХрд░реНрдо рдХреЛ рд╡рд┐рд╢рд╛рд▓ рдкрд░реАрдХреНрд╖рдгрд╕реВрддреНрд░реЛрдВ рдкрд░ рджреБрд░реНрдШрдЯрдирд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирд╛ рд╕рдХрддреА рд╣реИред
(рд╣рд╛рдБ, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реБрдЖ рд╣реИ: рд╕реНрдорд╛рдЗрд▓реА :)

рдзрдиреНрдпрд╡рд╛рдж @gkalpak - рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдХрд╛ рдЬрд╛рд╕реВрд╕ (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреЗрд╡рд▓ рдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдПрдХ рд╣реА рдореБрджреНрджреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред рдХреНрдпрд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдиреНрдп рдХрд╛рдо рд╣реИ рдпрд╛ рдЕрдиреНрдп рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рд╣реИ?

@KeithPepin angular.element рдПрдХ рдореБрд╢реНрдХрд┐рд▓ рдЬрд╛рдирд╡рд░ рд╣реИред рдХреНрдпрд╛ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреА рдЬрд╛рд╕реВрд╕реА рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ? рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджреЗ рд╕рдХрддреЗ рд╣реИрдВ?

рдореЗрд░реЗ рд╕рд╛рде рднреА рд╡рд╣реА рджрд┐рдХреНрдХрдд рд╣реИред
рдХреБрдЫ рддреНрд░реБрдЯрд┐ рдкрд╛рдПрдВ рд╕рдВрджреЗрд╢:

PhantomJS 2.1.1 (Linux 0.0.0) щжЦщб╡хНХхЕГц╡ЛшпХ щжЦщб╡хЖЕхо╣цОзхИ╢хЩиц╡ЛшпХ ш░ГчФишО╖хПЦцХ░цНоцОехПг encountered a declaration exception FAILED
    ReferenceError: Can't find variable: module in /client/modules/bootstrap/test/bootstrap.spec.js (line 4)
    /client/modules/bootstrap/test/bootstrap.spec.js:4:23
    global code@/client/modules/bootstrap/test/bootstrap.spec.js:3:9
PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.041 secs / 0.001 secs)

рдореЗрд░рд╛ рдкрд░реАрдХреНрд╖рдг рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:

describe( 'щжЦщб╡цибхЭЧхНХхЕГц╡ЛшпХ', function(){

    var $httpBackend,
        $indexFactory;

    beforeEach( module( 'Datatao.bootstrap' ) ); 

    beforeEach( inject( function( _$httpBackend_,  _IndexFactory_ ){ 
        $httpBackend    = _$httpBackend_;
        $indexFactory   = _IndexFactory_;
    }) ); 

    describe( 'щжЦщб╡хЖЕхо╣цОзхИ╢хЩиц╡ЛшпХ', function(){
        it( 'ш░ГчФишО╖хПЦцХ░цНоцОехПг', function(){
            expect( true ).toBe( true ); 
        });
    });

});

рдФрд░ рдореИрдВ рдХреЛрдгреАрдп 1.4.8 рдФрд░ рдпреВрдЖрдИ-рд░рд╛рдЙрдЯрд░ 0.2.15 рдХреЛрдгреАрдп-рдореЛрдХреНрд╕ 1.5.2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХреЛрдгреАрдп -1.5 рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдмрд╛рдд рдареАрдХ рд╣реИред
рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ @me

@terminatorheart рд╣рдо рдХреЛрдгреАрдп рдФрд░ рдХреЛрдгреАрдп-рдирдХрд▓реА рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдЖрдкрдиреЗ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП 1.5.2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ?

рдореИрдВрдиреЗ рдпрд╣рд╛рдБ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рджреЛрдмрд╛рд░рд╛ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ https://github.com/petebacondarwin/issue-14251
рд▓реЗрдХрд┐рди karma start рдореЗрд░реЗ рд▓рд┐рдП рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рд╕реБрдЭрд╛рд╡ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЕрд╕рдлрд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдФрд░ рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП?

1.5.0 рд╕реЗ 1.5.1 рдкрд░ рдЪрд▓рддреЗ рд╕рдордп рдореБрдЭреЗ рдЗрд╕реА рддрд░рд╣ рдХреА рддреНрд░реБрдЯрд┐рдпрд╛рдБ рд╣реЛ рд░рд╣реА рд╣реИрдВред

рдЖрд╡реЗрджрди рд╕реЗ рдкрд╣рд▓реЗ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЛрдб рд╣реИред рдЕрдм рдиреАрдЪреЗ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдЗрд╕рдХреА рд╡рд┐рдлрд▓рддрд╛ред

var injMods = ['ng', 'tcpInitModule', 'mpyInitModule'];
var initInjector = angular.injector (injMods);

var tcpMembershipSvc = initInjector.get ('tcpMembershipSvc');
// tcpMembershipSvc рдкреНрд░рджрд╛рддрд╛ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд╛рдо рдХрд░реЗрдВ

// рдЕрдВрдд рдореЗрдВ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк
angular.bootstrap (рджрд╕реНрддрд╛рд╡реЗрдЬрд╝, ['tcpMainModule']);

рддреНрд░реБрдЯрд┐:
рдмрд┐рдирд╛ рдХрд┐рд╕реА рддреНрд░реБрдЯрд┐ рдХреЗ: [$ рдЗрдВрдЬреЗрдХреНрдЯрд░: рдЕрдирдкреНрд░ ] рдЕрдЬреНрдЮрд╛рдд рдкреНрд░рджрд╛рддрд╛: $ rootElementProvider <- $ rootElement <- $ рд╕реНрдерд╛рди <- $ рдорд╛рд░реНрдЧ <- $ рд╕реНрдерд╛рди
http://errors.angularjs.org/1.5.1/ $ рдЗрдВрдЬреЗрдХреНрдЯрд░ / unpr? p0 =% 24rootElementProvider%тАж% 24rootElement% 20% 3C-% 20% 24location% 20% cC-% 20% 24route% 20% 3C-% % 20% 24 рдмрд┐рд▓рд┐рдпрди

рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдпрд╣ рдиреАрдЪреЗ рдХреА рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рддреНрд░реБрдЯрд┐: [$ рдЗрдВрдЬреЗрдХреНрдЯрд░: рдореЛрдбреБрд▓рд░ ] рдЗрд╕рдХреА рд╡рдЬрд╣ рд╕реЗ рддрддреНрдХрд╛рд▓ рдореЙрдбреНрдпреВрд▓ рдПрдирдЬреА рдореЗрдВ рд╡рд┐рдлрд▓:
TypeError: 'рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд' рдХреЛрдИ рдСрдмреНрдЬреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реИ ('Function.prototype.bind.apply' рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди)
рддрд╛рддреНрдХрд╛рд▓рд┐рдХрддрд╛ рдкрд░ (c: /app/internal_packages/angular/angular.js: 4640)

@mlakmal рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреЗ рдореБрджреНрджреЗ рдХрд╛ рдПрдХ

@petebacondarwin i рдиреЗ рдиреАрдЪреЗ рдкреНрд▓рд╛рдВрдЯрд░ рдЬреЛрдбрд╝рд╛ рд╣реИред

https://plnkr.co/edit/J32cQo4Fo9fkiRH3pF3L?==view

рдореИрдВрдиреЗ рдпрд╣ рднреА рджреЗрдЦрд╛ рдХрд┐ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рддреНрд░реБрдЯрд┐ v1.5.0 рдкрд░ рднреА рдЖрддреА рд╣реИ ...

@ mlakmal рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ plnkr рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЕрд▓рдЧ рд╣реИред рдпрд╣ рд╢рд╛рдпрдж ngRoute рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд┐рд▓рд╛ рд╣реИред

рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдореБрджреНрджрд╛ Function.prototype.bind рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдкреНрд░реЗрдд 1.x рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдЖрдкрдХрд╛ рдЕрдиреНрдп рдореБрджреНрджрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ ( ngRoute рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ) (5e37b2a) - рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдПрдХ рдиреНрдпреВрдирддрдо рдкреНрд░рдЬрдирди рд╣реИ: angular.injector(['ng', 'ngRoute'])
рдПрдХ рдФрд░ рдиреНрдпреВрдирддрдо рдкреНрд░рдЬрдирди ( ngRoute рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ) рд╣реЛрдЧрд╛: angular.injector(['ng']).get('$location');

рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ $location рд╕реЗрд╡рд╛, $rootElement рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред $rootElement рдХреЛрдгреАрдп рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдХреЛрдИ рдРрдк рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рди рд╣реЛ (рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИ)ред рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдХрд┐рдП рдЧрдП рдРрдк рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ $location рдХреЛ рдкрд▓рдЯрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реБрдП, рдЗрдВрдЬреЗрдХреНрдЯрд░ рдХреЛ $rootElement рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕ рд╕рдордп $rootElement рд▓рд┐рдП рдХреЛрдИ рдкреНрд░рджрд╛рддрд╛ рдирд╣реАрдВ рд╣реИ ред

TBH, рдореИрдВ рдХрд╕реНрдЯрдо рдЗрдВрдЬреЗрдХреНрдЯрд░ рд╕реЗ ngRoute рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВ ( @mlakmal рдореБрдЭреЗ рдЖрдкрдХреЗ usecase рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдЬрд╛рдирдиреЗ рдореЗрдВ рдмрд╣реБрдд рд░реБрдЪрд┐ рд╣реЛрдЧреА, рднрд▓реЗ рд╣реА рдХреЗрд╡рд▓ OOC: рд╕реНрдорд╛рдЗрд▓реА :)ред

рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХрд╛рдо рдХреЗ рдЖрд╕рдкрд╛рд╕, рдПрдХ рдбрдореА рдЕрддрд┐рд░рд┐рдХреНрдд рдореЙрдбреНрдпреВрд▓ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╣реИ рдЬреЛ $rootElement рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:

angular.module('fakeRootElement', []).value('$rootElement', angular.element('<div></div>'));
var initInjector = angular.injector(['ng', 'InitModule', 'fakeRootElement']);

рдЕрдкрдбреЗрдЯреЗрдб plnkr

рдЕрдм, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореБрджреНрджреЗ рдкрд░, $location $rootElement рдХрд░рдХреЗ рд╕рднреА click рдШрдЯрдирд╛рдУрдВ рдХреЛ рд░реЛрдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ HTML5 рдореЛрдб рдореЗрдВ рд╕рдВрднрд╛рд▓рддреЗ рд╣реИрдВред рд╣рдо рдЗрд╕реЗ рдПрдХ "рд╡реИрдХрд▓реНрдкрд┐рдХ" рдирд┐рд░реНрднрд░рддрд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП $rootElement рдЗрдВрдЬреЗрдХреНрд╢рди рддрднреА рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдпрд╣ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛ рдпрд╛ рдбрдореА $rootElement рдФрд░ рдЗрд╕реЗ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдХреЗ рджреМрд░рд╛рди рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдП)ред
рд╕рд╡рд╛рд▓ рд╣рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП?

HI @gkalpak , рдЖрдк рд╕рд╣реА рд╣реИрдВ, рд╣рдо рдлреИрдВрдЯрдо JS 1.9.8 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ v2 рдкрд░ рдЬрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмрд┐рд▓реНрдб рдПрдЬреЗрдВрдЯреНрд╕ рдкрд░ рдЖрд╡рд╢реНрдпрдХ рдиреЛрдб рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЗ рдХрд╛рд░рдг рд╣рдорд╛рд░реА рддрд░рдл рд╕реЗ рджреЗрд░реА рд╣реЛ рд░рд╣реА рд╣реИ (рд╣рдо рдЕрднреА рднреА рдиреЛрдб v0.12.x рдкрд░ рд╣реИрдВ) ред рдореИрдВрдиреЗ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ PhantomJS рдХреЛ v2 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдФрд░ рдореЗрд░реА рдпреВрдирд┐рдЯ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдЕрдЪреНрдЫреЗ рд▓рдЧреЗред рдХрд┐рд╕реА рднреА рд╡рд┐рдЪрд╛рд░ рдХреИрд╕реЗ PhantomJS 1 рдореБрджреНрджрд╛ рддрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП?

рдЗрдВрдЬреЗрдХреНрдЯрд░ рдкрд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдиреЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ред рдореИрдВ рдЙрд╕ рдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рд░рд╣ рд╕рдХрддрд╛ рд╣реВрдВ, рдЬрдм рддрдХ рд╣рдо рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдПрдВрдЧреБрд▓рд░рдЬреЗрдПрд╕ 2 (рд╕рдкрдиреЗ рджреЗрдЦрдиреЗ ...) рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рддреЗред

NgRoute рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ: рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдЫ рд╕реЗрд╡рд╛рдПрдВ рд╣реИрдВ рдЬреЛ рдЙрди рдХреЙрдордирдореЙрдбрд▓ рдФрд░ InitModule рдкрд░ ngRoute рдХреЗ рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╕рдордп рдЙрди рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЧреИрд░-рд▓рд╛рдн рдЬреЛрдбрд╝рдирд╛ рдерд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдЙрди рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдирдХрд╛рдЙрдВрдЯрд░ рдХреЛ рддрднреА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рдЗрд╕рдХреЗ рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реЛред

PhantomJS 1 рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдореБрджреНрджреЛрдВ рдХреЛ рдХрд░реНрдо рдХреЗ рд▓рд┐рдП рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рдХрд┐ рдпрд╣ рддреНрд░реБрдЯрд┐ рдЕрдЪрд╛рдирдХ рдХреЛрдгреАрдп 1.5.x рдЙрдиреНрдирдпрди рдХреЗ рдмрд╛рдж рдХреНрдпреЛрдВ рд╣реБрдИ ...

https://www.npmjs.com/package/phantomjs-polyfill

@mlakmal , рджрд┐рдпрд╛ , рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдХреЛрдгреАрдп рдиреЗ Function.prototype.bind рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдЕрдм рд╣рдо рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореВрд▓ рд╡рд░реНрдЧреЛрдВ рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдФрд░ рд╕рднреА рд╕рдорд░реНрдерд┐рдд рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЗрд╕реЗ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ PhantomJS рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ ( рдПрдирдХрд╛рдЙрдВрдЯрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рд╣рд┐рдд рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рддрдХ) рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд┐рдирд╛ред

ngRoute InitModule рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ:
ngRoute рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рджрд╛рддрд╛ ( $routeProvider ) рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХреЗрд╡рд▓ рдкрдВрдЬреАрдХреГрдд рдорд╛рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред рдореБрдЭреЗ рдЕрднреА рднреА рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕рд╣рд┐рдд рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдЗрдВрдЬреЗрдХреНрдЯрд░ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЗрдВрдЬреЗрдХреНрдЯрд░ рд╕реЗрд╡рд╛ рдХрд╛ рдПрдХ рдЕрд▓рдЧ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдПрдЧрд╛ - рдкреНрд░рддреНрдпреЗрдХ рдЗрдВрдЬреЗрдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рд╕реЗрд╡рд╛рдПрдВ рдПрдХрд▓ рд╣реИрдВ)ред
рдпрджрд┐ рдЖрдк InitModule рд▓реЛрдб рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХреБрдЫ рд╕рд╣рд╛рдпрдХ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдкрдХрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЗрди рд╕рд╣рд╛рдпрдХ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдореЙрдбреНрдпреВрд▓ (рдЬреЛ InitModule рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ) рдХреЛ рдирд┐рдХрд╛рд▓рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЗрдВрдЬреЗрдХреНрдЯрд░ рдореЗрдВ рдЙрд╕ рд╕рд╣рд╛рдпрдХ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓реЛрдб рдХрд░реЗрдВред

@gkalpak рд╣рдо рдЕрдкрдиреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдореЗрдВ ngRoute рд╕реЗ $ рдорд╛рд░реНрдЧрдкреНрд░реЗрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдЗрд╕реЗ рдХреБрдЫ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рд╣реИ ... рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЕрд▓рдЧ рд╕реЗ рдЕрдкрдиреА рдХрд▓реНрдкрдирд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ ngRoute рдореЙрдбреНрдпреВрд▓ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

@mlakmal , рдореЗрд░рд╛ рдХрд╣рдирд╛ рдерд╛ рдХрд┐ рдореИрдВ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛ рдХрд┐ рдЖрдкрдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЗрдВрдЬреЗрдХреНрдЯрд░ рдореЗрдВ ngRoute рдХреИрд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдк рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рддреЗ рд╣реИрдВ ( angular.injector([...]) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ), рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдЗрдВрдЬреЗрдХреНрдЯрд░ рд╣реЛрдЧрд╛ (рдЕрд▓рдЧ рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде) рдЙрджрд╛рд╣рд░рдг) рдЖрдкрдХреЗ рдРрдк рдХреЗ рдЗрдВрдЬреЗрдХреНрдЯрд░ рд╕реЗред

рд╣реЗ рджреЛрд╕реНрддреЛрдВ, рдПрдХ рджреЛ рджрд┐рдиреЛрдВ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рдЗрд╕рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рд╣реИред

рдореИрдВ рд╕рднреА рдХреЙрд▓ рдХреЗ рд╕рд╛рде angular.element рдЬрд╛рд╕реВрд╕реА рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред

spyOn( angular, 'element' ).andCallThrough();

рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?

@mattgrande рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рдбреЗрдореЛ рдХреЗ рдмрд┐рдирд╛ рдмрд╣реБрдд рдХреБрдЫ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред ;)

рдпрд╣ рдЬреИрд╕реНрдореАрди 2.x btw рдХреЗ рд╕рд╛рде рдПрдХ рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЬрд╛рд╕реВрд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рднреА рдЧреБрдгреЛрдВ рдХреЛ рдЬрд╛рд╕реВрд╕ рдкрд░ ( рдбреЗрдореЛ рджреЗрдЦреЗрдВ) рдХреЙрдкреА рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рдЕрднреА рднреА рдЬреИрд╕реНрдореАрди 1.x рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдЬреЛ рдЧреБрдгреЛрдВ рдХреА рдирдХрд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ ( рдбреЗрдореЛ рджреЗрдЦреЗрдВ)ред
рдЖрдк рдЗрд╕рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЧреБрдгреЛрдВ рдХреА рдирдХрд▓ рдХрд░рдХреЗ (рдпрд╛ рддреЛ рд╕рднреА рдпрд╛ рдХреЗрд╡рд▓ рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рдЬреИрд╕реЗ cleanData :

spyOn(angular, 'element').andCallThrough();

// Copy all properties
angular.extend(angular.element, angular.element.originalValue);
// or
// Copy `cleanData` only
angular.element.cleanData = angular.element.originalValue.cleanData;

TBH, рдореИрдВ рдЗрд╕реЗ works as expected / won't fix рд░реВрдк рдореЗрдВ рдмрдВрдж рдХрд░рдиреЗ рдХреА рдУрд░ рдЭреБрдХрддрд╛ рд╣реВрдВред angular.element() рдмрд╣реБрдд рдореМрд▓рд┐рдХ рд╣реИ рдФрд░ рдЕрдЧрд░ рдХреЛрдИ рдЗрд╕ рдкрд░ рдЬрд╛рд╕реВрд╕реА рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╡реЗ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рдмреАрд╕реА рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд░рд╣рддреЗ рд╣реИрдВ (рдпрд╛ рдЬреИрд╕реНрдореАрди 2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: str_out_tongue :)

ngMock рдЕрдВрджрд░ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдирд╛ рднреА рдЖрд╕рд╛рди рд╣реЛрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП angular.element.cleanData(...) рдХреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдмрджрд▓реЗрдВ:

var ngEl = angular.element;
(ngEl.cleanData || (ngEl.originalValue && ngEl.originalValue.cleanData) || angular.noop)(...)

рд▓реЗрдХрд┐рди рдХрд▓ рдПрдХ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИред

рддреЛ, рдЪреВрдВрдХрд┐:

(рдП) рдпрд╣ рдХреЗрд╡рд▓ рдЬреИрд╕реНрдореАрди 1.x (2.x рдирд╣реАрдВ) рдХреЗ рд╕рд╛рде рдПрдХ рдореБрджреНрджрд╛ рд╣реИ,
(b) рдпрд╣ рдХреЗрд╡рд▓ рдкрд░реАрдХреНрд╖рд╛рдУрдВ рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИ рди рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдФрд░
(c) рдЗрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ,

рдореИрдВ (рдЕрднреА рднреА) рдпрд╣ "рдлрд┐рдХреНрд╕рд┐рдВрдЧ" рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЭреБрдХрд╛рд╡ред

@gkalpak рдореИрдВ

@KeithPepin рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛,

рдЕрдЧрд░ (рдХреЛрдгреАрдпред
angular.element.cleanData (cleanUpNodes);

рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛

рдЗрд╕ рджреЛрд╕реНрддреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдБ рдФрд░ рдЬреИрд╕реНрдореАрди 2.x рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реВрдБ (рд╡рд╣рд╛рдБ _too_ рдХрдИ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рд╣реИрдВ), рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рдмрд╣реБрдд рдмрдбрд╝рд╛ рджрд░реНрдж рд╕рд╛рдмрд┐рдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдХреАрде рдХреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдБрдЧрд╛ред

рдЕрджреНрдпрддрди: рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬреИрд╕реНрдореАрди 2.1 рдкрд░ рдерд╛, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдирд╡реАрдирддрдо рдХреЛ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛, рдФрд░ рдпрд╣ рдХреБрдЫ рднреА рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛ред

рдореИрдВрдиреЗ @gkalpak рдХреА "рд╡рд┐рд╕реНрддрд╛рд░" рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╛рдкреНрдд рдХрд┐рдпрд╛ред рдзрдиреНрдпрд╡рд╛рдж!

@mattgrande , рдЪрдореЗрд▓реА рдХреЗ рдХрд┐рд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЖрдкрдиреЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛? рдпрд╣ рдЕрдЬреАрдм рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЪрдореЗрд▓реА v2.4.1 рдХреЗ рд╕рд╛рде рдореЗрд░реЗ рдбреЗрдореЛ рдкрд░ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдЙрд▓рдЭрди рдореЗрдВ:

рдХреЛрдгреАрдп-рдореЛрдХреНрд╕ 1.5.2 рдФрд░ 1.5.3 рдХреЗ рд╕рд╛рде рд╕рдорд╛рди рддреНрд░реБрдЯрд┐рдпрд╛рдВ
(рдЪрдореЗрд▓реА 2.4.1)

рдЪрдореЗрд▓реА 2.4.0; рдХреЛрдгреАрдп рд╕рдВрд╕реНрдХрд░рдг 1.5.2

рд╣рд╛рдп рдореИрдВ рднреА PhantomJS2, рдХрд░реНрдо рдФрд░ рдЪрдореЗрд▓реА рдХреЗ рд╕рд╛рде рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдореБрджреНрджреЛрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдореИрдВ рдХрд░реНрдо рдФрд░ рдЪрдореЗрд▓реА рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореЗрд░рд╛ рдРрдк рднреА ngRoute рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рддрдм рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдЬрдм рдореИрдВ $ rootScope рдФрд░ $ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВред рдореИрдВ рдЕрдкрдиреЗ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдордЬрд╛рдХ рдЙрдбрд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП ngMock рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЧреБрдВрдЬрд╛рдЗрд╢ рдФрд░ рдирд┐рдпрдВрддреНрд░рдХ рд╣рдореЗрд╢рд╛ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬрдм рдореИрдВ angular.module рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд┐рд░реНрдл рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдореИрдВ рдЬрд╛рд╕реВрд╕реА рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред

рдХреНрдпрд╛ рддреНрд░реБрдЯрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЛрдИ рд╕реБрдЭрд╛рд╡?

1.4.6 рд╕реЗ 1.5.3 рдкрд░ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рднреА рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЖ рд░рд╣реА рд╣реИред

рдХреНрдпрд╛ рдЖрдк рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рд░рди рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдбреЗрдореЛ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

@petebacondarwin рдпрд╣рд╛рдВ рдЯреНрд░реИрд╡рд┐рд╕ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╡рд┐рдлрд▓ рд░рд╣рд╛: https://travis-ci.org/prestonvanloon/newrelic-angular/builds/118604417

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдпрд╣рд╛рдБ рдкреАрдЖрд░ рдЗрд╕реЗ рдкреИрджрд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╣реИ https://github.com/prestonvanloon/newrelic-angular/pull/28

@prestonvanloon , рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдХреЛрдгреАрдп рдФрд░ рдХреЛрдгреАрдп-
рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рдорд┐рд▓рд╛рди рд╡рд╛рд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

@gkalpak рдзрдиреНрдпрд╡рд╛рдж!

@prestonvanloon : рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдХреЛрдгреАрдп рдФрд░ рдХреЛрдгреАрдп-рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рдореИрдВ рдЙрд╕реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдЬрдм рдореИрдВ рдХреЛрдгреАрдп-рдореЛрдХреНрд╕ рд╕рдВрд╕реНрдХрд░рдг 1.5.5 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдХреЛрдгреАрдп рд╕рдВрд╕реНрдХрд░рдг 1.4.7 рдерд╛, рддреЛ рдореБрдЭреЗ рд╡рд╣реА рдЕрдкрд╡рд╛рдж рдорд┐рд▓рд╛ред рдЬрдм рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдХреЛрдгреАрдп рд╕рдВрд╕реНрдХрд░рдг рдХреЛ 1.5.5 рдкрд░ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛, рддреЛ рдореБрдЭреЗ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдорд┐рд▓реА рдФрд░ рд╕рднреА рдкрд░реАрдХреНрд╖рдг рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЪрд▓реЗред

рдзрдиреНрдпрд╡рд╛рдж @ varun85jobs рдФрд░ @gkalpak , рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░рд╛ рдореБрджреНрджрд╛ рдерд╛

рд╣реЗ рджреЛрд╕реНрддреЛрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рдХреЛрдгреАрдп рд╕рдВрд╕реНрдХрд░рдг 1.5.3 рдФрд░ рдХреЛрдгреАрдп-рдореЛрдХреНрд╕ 1.5.3 рдХреЗ рд╕рд╛рде рдПрдХ рдЖрдпрдирд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рднреА рд╡рд╣реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА рд╣реИред рдпрд╣ рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

рдирдорд╕реНрддреЗ, рдпрд╣рд╛рдБ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл 1.5.5 рдФрд░ 1.5.3 рдХреЗ рд╕рд╛рде рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рдФрд░ рдЕрднреА рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде, рдЕрд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдо 1.5.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдХреАрдердкреЗрдкрд┐рди рдХреЗ рдЙрддреНрддрд░ рдиреЗ рдЗрд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдХреЛрдб рдХреЛ рдирд╣реАрдВ рдмрджрд▓рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА angular.element рдЬрд╛рд╕реВрд╕реА рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рд╣рдо рдПрдХ рдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдирд╣реАрдВ рдмрдврд╝ рд╕рдХрддреЗред

рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдкреНрд░рд╢реНрди рдирд╣реАрдВ рд╣реИ рдпрд╣рд╛рдБ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗред
рдореЗрд░рд╛ рдЬрд╡рд╛рдм рд╡рд╣рд╛рдБ рд╕реЗ, рдЕрдЧрд░ рдпрд╣ рдпрд╣рд╛рдБ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░реЗрдЧрд╛:

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдереА рдФрд░ рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рддрдп рдерд╛ рдХрд┐ рдореБрдЭреЗ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ jquery рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ рдерд╛:

files: [
      'bower_components/jquery/dist/jquery.js',
      'bower_components/angular/angular.js',
      'bower_components/angular-mocks/angular-mocks.js',
...
]

рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рд╕реЗ рд╡рд┐рдЪрд╛рд░ рд▓рд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рднреА рдХреЛрдгреАрдп рдХреЗ рд╕рд╛рде jQuery рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рд╣рдореЗрдВ рдЕрднреА рднреА рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рдЬрдирди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдХреЛрдгреАрдп рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рднреА рд╕рдВрд╕реНрдХрд░рдг рдореИрдЪ рдХрд░рддреЗ рдереЗред

рдореБрдЭреЗ рдпрд╣ рдореБрджреНрджрд╛ рдорд┐рд▓рд╛: angular.element.parent рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИ

@ kristoff2016 , рдпрд╣ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХреА рддрд░рд╣ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред рдХреГрдкрдпрд╛ рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓реЗрдВ, рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реБрдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕рдВрдмрдВрдзрд┐рдд рдХреЛрдб, рд╕рдЯреАрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢, рдЖрдкрдХрд╛ environament (рдмреНрд░рд╛рдЙрдЬрд╝рд░, OS рдЖрджрд┐)ред рд▓рд╛рдЗрд╡ рд░рд┐рдкреНрд░реЛрдбрдХреНрд╢рди (рдХреЛрдбрдкреЗрди, рдкреНрд▓рдВрдХреНрд░ рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдХреЛ рдмрд╣реБрдд рд╕рд░рд╛рд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ: рдореБрд╕реНрдХрд░рд╛рд╣рдЯ:

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрджреНрджрд╛ рдпрд╣ рдерд╛ рдХрд┐ рдореИрдВ рдХрд░реНрдо-рдкреНрд░реЗрдд-рд▓рд╛рдВрдЪрд░ (^ 1.0.0 рдХреЗ рдмрдЬрд╛рдп ^ 0.1.4) рдХреЗ рдПрдХ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛, рдЬреЛ рдХрд┐ PhantomJS рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдирд┐рд░реНрднрд░ рдерд╛ред [email protected] рдХреЗ рд╕рд╛рде, рдпрд╣ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред

+1 рдХрд░реНрдорд╛-рдлреИрдВрдЯрдордЬ-рд▓реЙрдиреНрдЪрд░ рдФрд░ рдлреИрдВрдЯрдордЬ рдХреЛ 2+ рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХрд╛ рдХрд╛рдо рдХрд┐рдпрд╛

рдПрдХрдорд╛рддреНрд░ рд╡рд┐рдХрд▓реНрдк рдЬреЛ рдЕрдм рддрдХ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рдерд╛, рдХреЛрдгреАрдп / рдХреЛрдгреАрдп-рдореЛрдХреНрд╕ 1.5.0 рдкрд░ рдЕрдкрдЧреНрд░реЗрдб рдХрд░ рд░рд╣рд╛ рдерд╛

рдпрд╣ рдорд╣реАрдиреЛрдВ рд╕реЗ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реА рдмрд╛рд░ рд░рд┐рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдпрд╣рд╛рдВ рдЕрднреА рднреА рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдЬрдирди (рдорд┐рд▓рд╛рди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде) рдкреЛрд╕реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ !! рдЬреЛ рд╣рдо рджреЗрдЦ рдирд╣реАрдВ рд╕рдХрддреЗ, рдЙрд╕реЗ рд╣рдо рдареАрдХ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред :рдЪрд┐рдВрддрд┐рдд:

рдореИрдВ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдореЗрдВ рдкреНрд░рдЬрдирди рдорд┐рд▓рддрд╛ рд╣реИ рддреЛ рдлрд┐рд░ рд╕реЗ рдЦреБрд▓рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред

рд╣рд╛рдп @gkalpak , рд╕рдордп рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛, рд▓реЗрдХрд┐рди рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рд╣рдо рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рд╢рд░рд╛рд░рддреА рдХрд░ рд░рд╣реЗ рдереЗ: see_no_ рдмреБрд░рд╛рдИ:ред рдореИрдВрдиреЗ рдЗрд╕ рддрдЦреНрддреА рдореЗрдВ рдмрдЪрд╛рдпрд╛ рд╣реИред рддреЛ рдирд┐рдореНрди рдХреЛрдб рдЖрдкрдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдордиреЗ рдРрд╕рд╛ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдмрд╣реБрдд рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ:

var elSelect = angular.element;
angular.element = function(id) {
        try {
            return elSelect.call(angular, id);
        } catch(err) {
            return $(id);
        }
    };

рдЗрд╕рд▓рд┐рдП рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп рдХреЛрдгреАрдп рдФрд░ рдХреЛрдгреАрдп-рдореЛрдЬрд╝ рдХреЗ 1.5.0 рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди 1.5.1-1.5.7 ред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдорд▓рд╛ рд╣реИ рдпрд╛ рдпрджрд┐ angular.element рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреНрдп рдорд╛рдорд▓реЗ рднреА рдЯреВрдЯ рд╕рдХрддреЗ рд╣реИрдВред

Thx @vitorarinsред рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рд░реНрдкрд┐рд▓ рдШрдЯрдХ рдХреЛ angular.element рд░реВрдк рдореЗрдВ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░рдирд╛ рдПрдХ рдмрд╣реБрдд рд╣реА "рд╢рд░рд╛рд░рддреА" рдмрд╛рдд рд╣реИ рдФрд░ рдХрдо рд╕реЗ рдХрдо рдпрд╣ рдЧреБрдгреЛрдВ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдКрдкрд░ рд╡рд░реНрдгрд┐рдд angular.extend() рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдЖрдк рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

var ngElement = angular.element;
angular.element = angular.extend(function(id) {
  try {
    return ngElement.call(angular, id);
  } catch(err) {
    return $(id);
  }
}, ngElement);

рдЕрдкрдбреЗрдЯреЗрдб plnkr

рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж @gkalpak! рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХрдо рд╕реЗ рдХрдо рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╡рд╛рд▓реЗ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрдн рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдлрд┐рд░ рд╕реЗ рдмрд╣реБрдд рдХреБрдЫ!

рдирдорд╕реНрддреЗ, рдореИрдВ рднреА рдЙрд╕реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рдХреЛрдгреАрдп рдЪрдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдЕрдкрдиреЗ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЪрдпрди рдХрд░ рд░рд╣рд╛ рд╣реВрдБред
angular.element ('рдЪрдпрди')ред select2 ();

рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдЬрд╛рд╕реВрд╕реА рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛:
var ngElement = angular.element ('рдЪрдпрди');
angular.element = angular.extend (рдлрд╝рдВрдХреНрд╢рди (рдЖрдИрдбреА))
рдкреНрд░рдпрддреНрди {
рд╡рд╛рдкрд╕реА ngElement.call (рдХреЛрдгреАрдп, рдЖрдИрдбреА);
} рдкрдХрдбрд╝ (рдЧрд▓рддреА) {
рд╡рд╛рдкрд╕реА $ (рдЖрдИрдбреА);
}
}, рдПрдирд╕реЗрдореЗрдВрдЯ);

рдЬрд╛рд╕реВрд╕

    });

рдлреИрдВрдЯрдордЬрд╕ 2.1.1 (рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕ 0.0.0) рдПрд░реЛрд░
TypeError: рдЖрд╕рд╛рдиреА рд╕реЗ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ред
/node_modules/angular/angular.min.js:9 рдкрд░

рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрд╕ рдкрдж рд╕реЗ рдЧреБрдЬрд░рд╛ рдерд╛ рдФрд░ рдХреЛрдгреАрдп 1.5.7 рдФрд░ рдЪрдореЗрд▓реА 2.4.1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдЕрднреА рднреА рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдирд╣реАрдВ рд╣реБрдИ рд╣реИред

@ рд▓рдЯреНрдардорд╛рд░рдореВрд░реНрддрд┐ рдпрд╣ рдирд╣реАрдВ рд╣реИ:

var ngElement = angular.element('select');

рд▓реЗрдХрд┐рди рдЕ:

var ngElement = angular.element;

рдЗрд╕реЗ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдореВрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рди рдХрд┐ рдЗрд╕рдХреЗ рдЖрд╣реНрд╡рд╛рди рдХреАред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

gkalpak picture gkalpak  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

nosideeffects picture nosideeffects  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ashclarke picture ashclarke  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ashish91 picture ashish91  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

cmplank picture cmplank  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ