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)
});
}
아니요, "this"는 "obj"변수를 포함하는 Object의 범위 내에 있습니다. 앞서 말했듯이 "this"는 지시문에서 정의되지 않고 컨트롤러에서 예상되는 Object입니다. "this"를 "obj"로 변경하더라도 결과는 같습니다. – Hilo
"this"는 객체의 멤버 함수에만 할당됩니다. 객체 자체에는 포함되지 않습니다. 물론 "this"를 "obj"로 변경하면 여전히 실패합니다. "obj"는 생성자가 완료 될 때까지 null이므로 null을 전달하는 것입니다. –
아니요, "obj"는 null이 아닙니다. 지시문에 정의되지 않았으며 컨트롤러에서 유효합니다. – Hilo