рд╕реНрдХреЛрдк рд╡реЙрдЪрд░ рдХреЗ рд╕рд╛рде, рдЖрдк рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдкрд╣рд▓реА рдмрд╛рд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдирдП рдФрд░ рдкреБрд░рд╛рдиреЗ рдорд╛рди рд╕рдорд╛рди рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ:
$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()
рд╡рд┐рдзрд┐ рд╣реИред
рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкрд░рд┐рд╡рд░реНрддрди рд╡рд╕реНрддреБ рдореЗрдВ 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()
рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдкреНрд░рддреНрдпреЗрдХ
change
рдСрдмреНрдЬреЗрдХреНрдЯ (changes
рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдирд┐рд╣рд┐рдд) рдореЗрдВ рдЗрд╕ рд╕рдЯреАрдХ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдПisFirstChange()
рд╡рд┐рдзрд┐ рд╣реИред