Angular.js: $onChanges рдЬреАрд╡рдирдЪрдХреНрд░ рд╣реБрдХ рдореЗрдВ UNINITIALIZED_VALUE рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 15 рдЬреБрд▓ре░ 2016  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: angular/angular.js

рд╕реНрдХреЛрдк рд╡реЙрдЪрд░ рдХреЗ рд╕рд╛рде, рдЖрдк рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдкрд╣рд▓реА рдмрд╛рд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдирдП рдФрд░ рдкреБрд░рд╛рдиреЗ рдорд╛рди рд╕рдорд╛рди рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ:

$scope.$watch('expr', function (newValue, oldValue) {
    if (newValue === oldValue) {
        // first time running
    }
});

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреЛрдгреАрдп 1.5 $onChanges рдЬреАрд╡рдирдЪрдХреНрд░ рд╣реБрдХ рдХреЗ рд╕рд╛рде, рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░ рдСрдмреНрдЬреЗрдХреНрдЯ UNINITIALIZED_VALUE рдкрд┐рдЫрд▓рд╛ рдорд╛рди рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдЖрдк рдЗрд╕реЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рдирд╛рдо рдХреА рдЬрд╛рдБрдЪ рдХрд░рдХреЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

ExampleController.prototype.$onChanges = function (changes) {
    if (changes.expr.previousValue.constructor.name === 'UNINITIALIZED_VALUE') {
        // first time running
    }
};

рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рд╣реИрдХ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред

рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ UNINITIALIZED_VALUE рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕реНрдерд┐рд░ (рдХреЗрд╡рд▓-рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП) рдХрд╣реАрдВ (рдЬреИрд╕реЗ angular.UNINITIALIZED_VALUE ) рдХреЗ рд░реВрдк рдореЗрдВ рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рдВрднрд╡рддрдГ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рди рднреА рд╣реИрдВред

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

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

рдкреНрд░рддреНрдпреЗрдХ change рдСрдмреНрдЬреЗрдХреНрдЯ ( changes рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдирд┐рд╣рд┐рдд) рдореЗрдВ рдЗрд╕ рд╕рдЯреАрдХ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП isFirstChange() рд╡рд┐рдзрд┐ рд╣реИред

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

рдкреНрд░рддреНрдпреЗрдХ change рдСрдмреНрдЬреЗрдХреНрдЯ ( changes рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдирд┐рд╣рд┐рдд) рдореЗрдВ рдЗрд╕ рд╕рдЯреАрдХ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП isFirstChange() рд╡рд┐рдзрд┐ рд╣реИред

рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкрд░рд┐рд╡рд░реНрддрди рд╡рд╕реНрддреБ рдореЗрдВ isFirstChange() рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ:

ctrl.$onChanges = function (changesObj) { if (changesObj.fieldInfo.previousValue.constructor.name === 'UNINITIALIZED_VALUE') { init(); } };

@saurajit рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рд╡рд╣рд╛рдВ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рджреЗрд╡ рдЙрдкрдХрд░рдг рдХрдВрд╕реЛрд▓ рдореЗрдВ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди.рдПрдХреНрд╕рдкреАрдЖрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рд╣реЛрд╡рд░ рдХрд░рддреЗ рд╕рдордп рдЧрд╛рдпрдм рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ) рд▓реЗрдХрд┐рди рд╡рд╣ рдлрд╝рдВрдХреНрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдкрд░ рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╣реИред changes.expr.isFirstChange() (рдпрд╛ рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ changesObj.fieldInfo.isFirstChange() ) рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкрд░рд┐рд╡рд░реНрддрди рд╡рд╕реНрддреБ рдореЗрдВ isFirstChange() рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ:

ctrl.$onChanges = function (changesObj) { if (changesObj.fieldInfo.previousValue.constructor.name === 'UNINITIALIZED_VALUE') { init(); } };

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЫреЛрдЯрд╛ рдмрдВрдбрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдЬреИрд╕рд╛ рдХрд┐ https://github.com/angular/angular.js/issues/14917#issuecomment -232971141 рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, isFirstChange() рд╡рд┐рдзрд┐ changes рдЕрдВрджрд░ рдкреНрд░рддреНрдпреЗрдХ _ рдСрдмреНрдЬреЗрдХреНрдЯ _ рдкрд░ рд╣реИред рддреЛ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ changesObj.fieldInfo.isFirstChange() рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

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

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

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

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

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

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

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