Angular.js: ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ UNINITIALIZED_VALUE Π² Π»ΠΎΠ²ΡƒΡˆΠΊΠ΅ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° $ onChanges

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 15 июл. 2016  Β·  5ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: angular/angular.js

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚Π΅Π»Ρ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, запускаСтся Π»ΠΈ ΠΎΠ½ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ², ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ Π»ΠΈ Π½ΠΎΠ²ΠΎΠ΅ ΠΈ староС значСния:

$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() для этой Ρ†Π΅Π»ΠΈ.

ВсС 5 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ 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() .

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ

Π‘ΠΌΠ΅ΠΆΠ½Ρ‹Π΅ вопросы

th0r picture th0r  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

nosideeffects picture nosideeffects  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

piu picture piu  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

landed1 picture landed1  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

ashish91 picture ashish91  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ