2013-06-14 4 views
0

코드가 컨트롤러와 지시문 링크 함수인지 여부에 따라 개체 초기화가 다른 문제가 발생했습니다. 아래의 예제 코드에서 "이"매개 변수는 코드가 컨트롤러에서 실행하지만, 지시어에 실행할 때 정의되지 않은 합법적 인 Object 생성자는객체가 제어기보다 각도 지시문에서 다르게 초기화됩니까?

prop: new Object(this) 

에 전달되는. 동일한 코드의 실행이 다른 이유는 무엇입니까?

myapp.directive("myDir",function() 
{ 
    var myDir = { 
    link: function(scope,element,attrs) 
    { 
     var obj; 

     obj = new Object({ 
     prop: new Object(this) 
     }); 
    } 
    } 

    return myDir; 
} 


myapp.controller("MyCtrl",function($scope) 
{ 
    var obj; 

    obj = new Object({ 
    prop: new Object(this) 
    }); 
} 

답변

0

나는 선언문에 "this"를 사용하는 것이 문제라고 생각합니다. How does the "this" keyword work?에서 어떻게 작동하는지 이해하십시오.

내게는 "this"가 지시어의 "myDir"변수와 컨트롤러의 창 객체로 설정 될 것 같습니다.

+0

아니요, "this"는 "obj"변수를 포함하는 Object의 범위 내에 있습니다. 앞서 말했듯이 "this"는 지시문에서 정의되지 않고 컨트롤러에서 예상되는 Object입니다. "this"를 "obj"로 변경하더라도 결과는 같습니다. – Hilo

+0

"this"는 객체의 멤버 함수에만 할당됩니다. 객체 자체에는 포함되지 않습니다. 물론 "this"를 "obj"로 변경하면 여전히 실패합니다. "obj"는 생성자가 완료 될 때까지 null이므로 null을 전달하는 것입니다. –

+0

아니요, "obj"는 null이 아닙니다. 지시문에 정의되지 않았으며 컨트롤러에서 유효합니다. – Hilo

관련 문제