angular.element.scope()λ iframe src μμ±μ λ³κ²½νμ¬ μμ© νλ‘κ·Έλ¨μ΄ iframeμ λ‘λλ λ μ μλμ§ μμ΅λλ€.
λ€μ μ½λλ λ²μμ λν μ°Έμ‘°λ₯Ό λ°νν΄μΌ νμ§λ§ μ μλμ§ μμ κ²μ λ°νν©λλ€.
angular.element(document.body).scope()
μμ μ½λλ λ¬Έμκ° λ‘λλκ³ angularκ° λΆνΈμ€νΈλ©μ μλ£ν ν onclick νΈλ€λ¬μμ μ€νλ©λλ€.
<script>
document.addEventListener("click", function(){
console.log(angular.element(document.body).scope());
});
</script>
μ΄ λ¬Έμ λ src μμ±μ μμ νμ¬ λ¬Έμκ° iframeμ λ‘λλ λλ§ λνλ©λλ€.
jquery μμ΄ 1.3.0-rc.5λ‘ ν
μ€νΈνμ΅λλ€.
λ¬Έμ μ plnkr μ¬μμ°μ μ 곡ν μ μμ΅λκΉ?
λ΄ νλ‘μ νΈμ λμΌν λ¬Έμ κ° μμ§λ§ plnkrμ μ¬μ©νμ¬ μ¬νν μ μμ΅λλ€.
scope()λ λͺ¨λ μμμμ undefinedλ₯Ό λ°νν©λλ€.
JQLite λλ JQuery 2.1.1μ μ¬μ©νλ κ²λ λμΌν©λλ€.
AngularJS 1.3.1.
μ΄ μλ:
document.addEventListener('DOMContentLoaded', function () {
angular.element(document.body).scope();
});
@VictorQueiroz νλ‘μ νΈμμ λλ²κ·Έ μ 보λ₯Ό λΉνμ±ννκ³ μμ΅λκΉ?
@caitp μ°Ύμμ΅λλ€.
λλ²κ·Έ μ 보λ₯Ό λ€μ νμ±ννλ©΄ μ΄ λ¬Έμ λ₯Ό ν΄κ²°ν μ μμ΅λλ€.
μ’μ ν΄κ²° λ°©λ²
:μ€λ§μΌ: :μ€λ§μΌ: :μ€λ§μΌ:
νλμ λ°μμ νμ§ λͺ»ν΄ μ£μ‘ν©λλ€. μ΄ λ¬Έμ λ jqCache λλ λ ꡬ체μ μΌλ‘ expandoIdκ° μμ±λλ λ°©μκ³Ό κ΄λ ¨μ΄ μμ΅λλ€. μ΄μ RCμμλ idκ° λ€μκ³Ό κ°μ΄ μμ±λμμ΅λλ€.
var expandoId = element[JQLite.expando];
μ΅μ νλͺ©μμλ idκ° νλ μ½λ©λ μμ±μ μ¬μ©νμ¬ κ°μ Έμ΅λλ€.
var expandoId = element.ng339;
λ³κ²½ μ¬νμ λλ리면 λ¬Έμ κ° ν΄κ²°λμμ΅λλ€.
λΆννλ λλ κ·Έ λ΄μ©μ λν΄ λ§μ΄ μμ§ λͺ»νλ―λ‘ λκ΅°κ° κΈ°λ₯μ λν΄ λ°ν μ μλ€λ©΄ μλ§λ λ¬Έμ λ₯Ό λ μμΈν μ€λͺ
ν μ μμ κ²μ
λλ€.
μ€ μμ° κ°μ¬ν©λλ€ @caitp μ λ₯Ό λ―ΈμΉκ²
$compileProvider μ λ¬Έμμ $compileProvider.debugInfoEnabled(false)
κ° μμλλ λμμΈ κ²½μ° scope()
ν¨μκ° μ μλμ§ μμ κ°μ λ°ννκ² νλ€κ³ μ€λͺ
νλ λ©λͺ¨κ° μμ΄μΌ ν©λλ€.
νΈμ§: λ΄ λμ, κ·Έκ²μ μ΄λ―Έ λ¬Έμμ μμ΅λλ€
DOM μμμ λν λ°μΈλ© μ 보 λ° νμ¬ λ²μμ λν μ°Έμ‘° μΆκ°μ κ°μ μ»΄νμΌλ¬μμ λ€μν λλ²κ·Έ λ°νμ μ 보λ₯Ό νμ±ν/λΉνμ±ννλ €λ©΄ μ΄ λ©μλλ₯Ό νΈμΆν©λλ€.
μ΄ λ¬Έμ λ₯Ό ν΄κ²°νλ λ°©λ²μ΄ μμ΅λκΉ? debugInfoEnabled(false)κ° μμ§λ§ μ¬μ ν μμμ λ²μμ μ‘μΈμ€ν μ μμ΅λκΉ?
λλ²κ·Έ μ 보λ₯Ό μΌμμ μΌλ‘ νμ±ννλ €λ©΄(μ: λΌμ΄λΈ νλ‘λμ
μ±μμ λ¬Έμ λ₯Ό λλ²κΉ
νκΈ° μν΄) μ¬κΈ°μ μ€λͺ
λ λλ‘ angular.reloadWithDebugInfo()
λ₯Ό μ¬μ©ν μ μμ΅λλ€ .
@gkalpakμ΄ μ¬κΈ°μμ μ€λͺ νλ€κ³ μκ°ν©λλ€!
μ νμ? ν΄κ²° λ°©λ²μ μ°Ύλ κ²μ΄ λ¬Έμ κ° μμ λμμμ μλ―Ένλ κ²μ μλλλ€. scope()λ λλ²κ·Έ λͺ¨λμ κ΄κ³μμ΄ μ°κ²°λ λ²μλ₯Ό λ°νν΄μΌ ν©λλ€.
κ°λ₯νμ§ μλ€λ©΄ angular.element #scope() λ¬Έμμ
@Toilal μ΄ μ€λ λμ μ΄μ μ견μμ μΈκΈν λλ‘ μ΄λ―Έ λ¬Έμνλμ΄ μμΌλ―λ‘ λ«μμ΅λλ€. κ·Έλ¬λ λ€λ₯Έ μ₯μμμλ λ¬Έμνλμ΄μΌ νλ€κ³ μκ°νμ λ€λ©΄ PRμ λλ¨ν κ°μ¬νκ² μ΅λλ€!
λλ²κ·Έλ₯Ό λΉνμ±νν λ angular.elementμ λ§λ λ©μλκ° μλνμ§ μμμ§ νμ νμ§ λͺ»νκΈ° λλ¬Έμ ν μ μμ΅λλ€. λ΄κ° μλνκΈ° λλ¬Έμ scope()λ νμ€νμ§λ§ controller(), injector()μ κ°μ λ€λ₯Έ κ²λ€μ μ΄λ»μ΅λκΉ?
ν μ€νΈ νμλ scope() λ° isolateScope()μλ§ μν₯μ μ€λλ€. λλ κ·Έκ²λ€μ λ¬Έμννκ³ PRμ ν κ²μ΄λ€.
κ·Έλ¬λ λλ²κ·Έ μ 보λ₯Ό λΉνμ±νν μνμμ DOM μμμμ λ²μλ₯Ό κ²μνλ λ°©λ²μ΄ μμ΅λκΉ?
@Toilal - μ€μ λ‘λ
νμ§λ§ κ·Έλ κ² ν μ μλ μ§μλ¬Έμ μμ±νκ³ νμΈν΄μΌ νλ μμμ λ°°μΉνλ κ²μ 그리 μ΄λ ΅μ§ μμ κ²μ λλ€.
@pkozlowski-opensource κ°μ¬ν©λλ€. λ¬Έμμμ scope() λ° isolateScope()μ λν μμ λ¬Έμ₯μ μΆκ°νμ΅λλ€. κ·Έ λ°©λ²μ΄ λ΄ μ ν리μΌμ΄μ μμ μλνμ§ μλ μ΄μ λ₯Ό νμ νλ λ° μκ°μ΄ 걸리기 λλ¬Έμ λλ€.
@ocombe λ΄κ° ν μΌμ UI κ΅¬μ± μμλ₯Ό μμ± μ€μ΄κ³ μ΅μ’ κ°λ°μκ° λλ²κ·Έ μ 보λ₯Ό λΉνμ±νν μ μμΌλ―λ‘ scope/isolateScopeμ μμ‘΄ν μ μκΈ° λλ¬Έμ λλ€(κΆμ₯ μ¬ν).
setTimeout(ν¨μ() {
console.log(angular.element(document.body).scope());
}, 100);
@ronnievdv
μ΄ λ¬Έμ λ₯Ό ν΄κ²°νλ λ°©λ²μ΄ μμ΅λκΉ? debugInfoEnabled(false)κ° μμ§λ§ μ¬μ ν μμμ λ²μμ μ‘μΈμ€ν μ μμ΅λκΉ?
μ§μλ¬Έ μ μμ link
ν¨μμμ λ€μ snipet _(κΆμ₯νμ§ μμ)_ λ©μλλ₯Ό μ¬μ©νμ΅λλ€.
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λ₯Ό λμΌνκ² μ€μ ν μλ μμ΅λλ€.
κ°μ₯ μ μ©ν λκΈ
λλ²κ·Έ μ 보λ₯Ό μΌμμ μΌλ‘ νμ±ννλ €λ©΄(μ: λΌμ΄λΈ νλ‘λμ μ±μμ λ¬Έμ λ₯Ό λλ²κΉ νκΈ° μν΄) μ¬κΈ°μ μ€λͺ λ λλ‘
angular.reloadWithDebugInfo()
λ₯Ό μ¬μ©ν μ μμ΅λλ€ .