Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π°Π±Π»ΡΠ΄Π°ΡΠ΅Π»Ρ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π»ΠΈ ΠΎΠ½ Π²ΠΏΠ΅ΡΠ²ΡΠ΅, ΠΏΡΠΎΠ²Π΅ΡΠΈΠ², ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Π»ΠΈ Π½ΠΎΠ²ΠΎΠ΅ ΠΈ ΡΡΠ°ΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
$scope.$watch('expr', function (newValue, oldValue) {
if (newValue === oldValue) {
// first time running
}
});
ΠΠ΄Π½Π°ΠΊΠΎ Ρ ΠΊΡΡΡΠΊΠΎΠΌ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° Angular 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 Π½Π΅ ΠΏΠΎΡ
ΠΎΠΆΠ΅, ΡΡΠΎ ΠΎΠ½ ΡΠ°ΠΌ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Dev ΠΎΠ½ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΠΏΡΠΈ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΊΡΡΡΠΎΡΠ° Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ change.expr), Π½ΠΎ ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΡΠΊΡΡΡΠ° Π² ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ 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()
Π΄Π»Ρ ΡΡΠΎΠΉ ΡΠ΅Π»ΠΈ.