Angular.js: angular.element.scope () Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ undefined

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 9 ΠΎΠΊΡ‚. 2014  Β·  29ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: angular/angular.js

angular.element.scope () Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ загруТаСтся Π² iframe ΠΏΡƒΡ‚Π΅ΠΌ измСнСния Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° src iframe.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ссылку Π½Π° ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости, Π½ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ undefined:

angular.element(document.body).scope()

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄ выполняСтся Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ onclick послС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ angular:

<script>
    document.addEventListener("click", function(){
        console.log(angular.element(document.body).scope());
    });
</script>

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° проявляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ загруТаСтся Π² iframe ΠΏΡƒΡ‚Π΅ΠΌ измСнСния Π΅Π³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° src.
ΠŸΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ с 1.3.0-rc.5, Π±Π΅Π· jquery.

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ), Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ angular.reloadWithDebugInfo() ΠΊΠ°ΠΊ описано здСсь .

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

НС ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ€Π΅ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π² plnkr?

Π£ мСня такая ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² ΠΌΠΎΠ΅ΠΌ собствСнном ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅, Π½ΠΎ я Π½Π΅ ΠΌΠΎΠ³Ρƒ воспроизвСсти Π΅Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ plnkr.

scope () Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ undefined для любого элСмСнта.

ИспользованиС JQLite ΠΈΠ»ΠΈ JQuery 2.1.1 Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‚ΠΎ ΠΆΠ΅ самоС.

AngularJS 1.3.1.

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉ это:

document.addEventListener('DOMContentLoaded', function () {
  angular.element(document.body).scope();
});

Π²Ρ‹ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚Π΅ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² своСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ @VictorQueiroz?

@caitp Π’Ρ‹ Π΅Π³ΠΎ нашли.

Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ - Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΎΠ±Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡƒΡ‚ΡŒ

: smile:: smile:: smile:

Π˜Π·Π²ΠΈΠ½ΠΈΡ‚Π΅, рСбята, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ врСмя Π½Π΅ Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΡŽ. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΊΠ°ΠΊ-Ρ‚ΠΎ связана с jqCache ΠΈΠ»ΠΈ, Ρ‚ΠΎΡ‡Π½Π΅Π΅, с Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ создаСтся expandoId. Π’ старых RC ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ создавался Ρ‚Π°ΠΊ:
var expandoId = element[JQLite.expando];
Π’ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Ρ‹Ρ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ТСстко Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ свойство:
var expandoId = element.ng339;
ΠžΡ‚ΠΌΠ΅Π½Π° измСнСния устранила ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.
К соТалСнию, я ΠΌΠ°Π»ΠΎ Ρ‡Ρ‚ΠΎ знаю ΠΎΠ± этом, поэтому, Ссли Π±Ρ‹ ΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΌΠΎΠ³ ΠΏΡ€ΠΎΠ»ΠΈΡ‚ΡŒ свСт Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, я смог Π±Ρ‹ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ.

Ого , спасибо сводил мСня с ΡƒΠΌΠ°!
Π’ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ ΠΏΠΎ $ compileProvider Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅, ΠΎΠ±ΡŠΡΡΠ½ΡΡŽΡ‰Π΅Π΅, Ρ‡Ρ‚ΠΎ $compileProvider.debugInfoEnabled(false) заставит Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ scope() Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ undefined, Ссли это ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.

Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ: ΠΌΠΎΠΉ ΠΏΠ»ΠΎΡ…ΠΎΠΉ, это ΡƒΠΆΠ΅ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅

Π’Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ этот ΠΌΠ΅Ρ‚ΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ / ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ Π² компиляторС, Ρ‚Π°ΠΊΡƒΡŽ ​​как Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ привязки ΠΈ ссылки Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ для элСмСнтов DOM.

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ; Π΅ΡΡ‚ΡŒ debugInfoEnabled (false), Π½ΠΎ всС Π΅Ρ‰Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ области дСйствия элСмСнта?

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ), Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ angular.reloadWithDebugInfo() ΠΊΠ°ΠΊ описано здСсь .

Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ @gkalpak здСсь прояснил!

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅? Поиск ΠΎΠ±Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚ΠΈ Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° устранСна, scope () Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ нСзависимо ΠΎΡ‚ Ρ€Π΅ΠΆΠΈΠΌΠ° ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ.

Если это Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, это Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Ρ‡Π΅Ρ‚ΠΊΠΎ Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ Π² angular.element #scope () doc.

@Toilal Π― Π·Π°ΠΊΡ€Ρ‹Π» Π΅Π³ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΡƒΠΆΠ΅ Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½, ΠΊΠ°ΠΊ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… коммСнтариях этой Π²Π΅Ρ‚ΠΊΠΈ. Но Ссли Π²Ρ‹ считаСтС, Ρ‡Ρ‚ΠΎ это Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… мСстах, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΎΡ‡Π΅Π½ΡŒ Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π½Ρ‹ Π·Π° PR!

Π― Π½Π΅ ΠΌΠΎΠ³Ρƒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ вСдьм ΠΈΠ· angular.element Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. scope () Ρ‚ΠΎΡ‡Π½ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ я ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π», Π½ΠΎ ΠΊΠ°ΠΊ насчСт Π΄Ρ€ΡƒΠ³ΠΈΡ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ controller (), injector () ...

ПослС тСстирования ΠΎΠ½ влияСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° scope () ΠΈ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒScope (). Π― Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡŽ это ΠΈ сдСлаю ΠΏΠΈΠ°Ρ€.

Но Π΅ΡΡ‚ΡŒ Π»ΠΈ способ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости ΠΈΠ· элСмСнта DOM ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ?

@Toilal - Π½Π΅ совсСм - информация ΠΎΠ± области Π±Ρ‹Π»Π° ΡƒΠ΄Π°Π»Π΅Π½Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΅Π΅ раскрытиС влияСт Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ - Π²ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½Π° скрыта Π·Π° Ρ„Π»Π°Π³ΠΎΠΌ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ.

Но Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π΅ Ρ‚Π°ΠΊ слоТно Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ, которая ΠΌΠΎΠ³Π»Π° Π±Ρ‹ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, ΠΈ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π΅Π΅ Π² элСмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ.

Бпасибо @ pkozlowski-opensource. Π― Π΄ΠΎΠ±Π°Π²ΠΈΠ» нСбольшоС ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎ scope () ΠΈ isolateScope () Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ врСмя, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ эти ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π² ΠΌΠΎΠ΅ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.

@ocombe Π­Ρ‚ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ я сдСлаю, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ я ΠΏΠΈΡˆΡƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса ΠΈ Π½Π΅ ΠΌΠΎΠ³Ρƒ ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° ΠΎΠ±Π»Π°ΡΡ‚ΡŒ дСйствия / ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒScope, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ (ΠΊΠ°ΠΊ это рСкомСндуСтся).

setTimeout (function () {
console.log (angular.element (document.body) .scope ());
}, 100);

qq 20160115164505

@ronnievdv

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ; Π΅ΡΡ‚ΡŒ debugInfoEnabled (false), Π½ΠΎ всС Π΅Ρ‰Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ области дСйствия элСмСнта?

Π― использовал ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ snipet _ (Π½Π΅ рСкомСндуСтся) _ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ link опрСдСлСния Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹.

link: function(scope, element, attrs) {
  var isolatedScope = scope.$$childTail;
}

Π•ΡΡ‚ΡŒ Π»ΠΈ способ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ Π»ΠΈ debugInfo ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Ρ„Π»Π°Π³ для Π½Π΅Π³ΠΎ?

Из прилоТСния Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ $compileProvider.debugInfoEnabled() .
Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ экзСмпляр с ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, производствСнноС Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅), Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ angular.reloadWithDebugInfo() ΠΈΠ· консоли, ΠΈ ΠΎΠ½ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ.

@gkalpak Π― просто Ρ…ΠΎΡ‡Ρƒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π»ΠΈ отладочная информация ΠΈΠ»ΠΈ Π½Π΅Ρ‚. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ.

if(angular.isDebugInfoEnabled()) {
  // Do something
}

@hemkaran , ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ нСясно, _ Π³Π΄Π΅_ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ это ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ. Π― ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽ ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ вашСго прилоТСния.
Если это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Π°ΠΊ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ $compileProvider.debugInfoEnabled() .

@Toilal Π’Ρ‹ написали Ρ‚Π°ΠΊΡƒΡŽ ​​дирСктиву? Если Π΄Π°, Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π²Ρ‹ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ? Π£ мСня сСйчас эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. Π― ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΉΠ΄Ρƒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, Π½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π΅Π³ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ ΠΏΠΎΠ²Ρ€Π΅Π΄ΠΈΡ‚.
cc @ocombe

Π˜Π·Π²ΠΈΠ½ΠΈΡ‚Π΅, я большС Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Angular 1, ΠΈ ΠΌΠ½Π΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ​​дирСктиву (ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½Π° эта информация Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ)

Π― сдСлал ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ, пропустят Π»ΠΈ ΠΌΠΎΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΈΡ‰ΠΈ ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΎΠ±Π·ΠΎΡ€ :)

function exposeScope() {
    return {
        restrict: 'A',
        link: function(scope, element) {
            element[0].APPNAME = {
                getScope: function() {
                    return scope;
                }
            };
        }
    };
}

return {
        restrict: 'A',
        scope: false,
        link: function(scope, elem) {
            elem.data('$scope', scope);
        }
    };

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ самоС для $ isolateScope, Ссли Π²Π°ΠΌ это Π½ΡƒΠΆΠ½ΠΎ.

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