2016-11-24 4 views
0

aurelia js의 새로운 기능입니다. 여기, 아우렐 리아 js에서 콜백을해야합니다. 여기에 내가 노력 코드, file.jsaurelia js의 콜백 함수

this.commonFunctions.get_alrdyShrdUser(this.alrdyshardAry,function(err,result){ 
     if(!err){ 
      console.log("err,result",err,result); 
      this.sharedAlrdy = result; 
     }else{ 

     } 
    }); 

commonFunctions

get_alrdyShrdUser(docids,callback){ 
    this.httpValueConverter.call_http('sharing/users/list','POST',docids,'test') 
     .then(data => { 
     if(data.meta && data.meta.statusCode == 200) { 
     return callback(null,data.sharedUsers) 
     } 
    }); 
} 

여기 모두가 잘 작동이 콜백 함수는 값을 반환한다,하지만 난에 값을 할당 할 수 없습니다 aurelia varibale (this.sharedAlrdy). 오류가 발생합니다. undefined의 'sharedAlrdy'속성을 설정할 수 없습니다. 다른 방법으로 달성 할 수 있습니까?

답변

0

이것은 Aurelia와는 아무런 관련이 없습니다. this의 일반적인 JavaScript 문제 만 있습니다.

Aurelia를 사용하고 있으므로 ES6 코드라고 가정하고 화살표 기능을 지원합니다. 함수 콜백에서 화살표 기능을 사용하면 this을 캡처 문제가되지 않습니다 자세한 내용

this.commonFunctions.get_alrdyShrdUser(this.alrdyshardAry, (err, result) => { 
    if (!err) { 
     console.log("err, result", err, result); 
     this.sharedAlrdy = result; 
    } else { 

    } 
}); 

를 화살표 기능과 thisMDN를보십시오.

+1

덕분에 작동합니다. – sibi

+0

이걸 es6 formate로 바꾸는 법. $ ('.fb_folder_container'). on ('scroll', e => { if ($ this) .scrollTop ($ this) .innerHeight()> = $ (this) [0] .scrollHeight) { this.loadMoreData(); } }}); ' – sibi

+0

당신이 화살표 기능을 사용하고 있기 때문에'this '는 요소가 아닌 부모 범위를 참조합니다. 이 경우, 앞의 요소에 대한 변수를 만들고 let $ element = $ ('.fb_folder_container');'코드에서 사용하십시오 :'$ element.on ('scroll', e => {if ($ === element.scrollTop() + $ element.innerHeight()> = $ element.scrollHeight) {this.loadMoreData();})''- 그런 식으로, 확인할 함수 내에서'console.log()'를 할 수 있습니다. 값. BTW, 나는 보통 그 기능을'무한 - 스크롤 (infinite-scroll) '컴포넌트로 캡슐화했기 때문에 여러 페이지에서 재사용 할 수있다. –