내 Post.success 함수 내에서 this.RenderDeals()를 호출 할 수 없습니다. 나는 이것이 스코프와 관련이 있다고 가정한다. 누군가가 문제에 대해 밝히고 해결 방법을 제안 할 수 있습니까? 나는 행운없이 프로토 타입과 모듈 패턴을 사용해 보았다.자바 스크립트 클래스 범위
FYI Post는 jQuery Deferred 객체를 반환하는 $ .ajax 래퍼입니다.
function Deals() {
this.template = '#trTemplate';
this.container = '#containerTable';
this.GetDeals = function() {
Post('Deal.svc/GetDeals')
.success(function (result) {
this.RenderDeals(result);
});
};
this.RenderDeals = function (deals) {
$(this.template).tmpl(deals).appendTo(this.container);
}
}
var deal = new Deals();
deal.GetDeals();
UPDATE :
좋아, 그래서 난 그냥 GetDeals 기능 위에 다음 줄을 추가 : 대신
var me = this;
및
me.RenderDeals(result);
가 제대로 작동하려면 나타납니다 부르지 만, 이유가 확실하지 않습니다.
'나'를 정의한 다음 사용했기 때문에 효과가 있습니다. 그러나 'this'를 직접 사용하면 다른 상황이나 범위에 있기 때문에 다른 것의 인스턴스를 제공하게됩니다. – Kon
그냥 자바 스크립트 관용구에서 대문자로 시작하는 함수는 생성자 함수임을 의미합니다. 아니 문제 또는 아무것도,하지만 그냥 자바 스크립트 사람이 아니라 .net 사람이 이상한 외모가 –
@ 매트 어쩌면 내가 혁명을 시작합니다 ... –