-
카테고리
-
세부 분야
프론트엔드
-
해결 여부
미해결
펑션을 한 depth 더 들어가면 $호출이 안되는 이유가 뭘까요?
22.07.13 21:57 작성 조회수 137
0
안녕하세요. 강사님
<AUIGrid ref="fileGrid" class="grid-wrap"
style="height:35vh"
>
</AUIGrid>
선언 후
삭제시 함수를 호출하도록 해두었습니다.
async goDeleteFile(event) {
console.log('삭제@!!!!', event.item)
this.$message.success(`파일삭제 완료`); // 호출가능
this.$confirm({
title: '첨부를 삭제하시겠습니까?',
// content: 'Bla bla ...',
okText: '확인',
cancelText: '취소',
onOk() { // 이곳만 들어가면 $또는 $refs 접근이 불가능해짐
deleteFile({file_seq: event.item.file_seq}).then(
(res) => {
console.log('res====', res)
if (res.code == 200) {
console.log('삭제후 들어왔습니다.!@!@!@@!@!@!@!')
this.$refs.fileGrid.clearGridData() //호출 불가
this.$message.success(`파일삭제 완료`); //호출 불가
} else {
this.$message.error(res.message);
}
//return res.data;
},
error => {
console.log('error ==== ', error)
}
)
}
})
}
같은 내장 라이브러리 인 this.$message.success() 인데 goDeleteFile 함수안에서 바로 호출하면
호출이 되고 onOk() 펑션 안에서는 접근이 아예 안되는 이유 모르겠네요.
혹시 제가 vue의 사상을 이해하지 못하고 쓰는 것 같아 질문을 남겨봅니다.
답변을 작성해보세요.
0
개발자의 품격
지식공유자2022.07.16
이건 vue 문제라기 보다는 지금 사용하고 계신 $confirm 안에 deleteFile 함수가 별도 스콥으로 구현되어 있기 때문입니다.
0
개발자의 품격
지식공유자2022.07.14
안녕하세요.
호출 불가라고 된 곳에서 console.log(this)를 출력해 보시면, 아마도 vue 인스턴스가 아니고 window 객체가 출력되고 있을 것 같습니다. 이 문제는 onOk() 함수가 별도의 scope으로 동작하기 때문에 그 안에서 this는 더이상 vue의 data나 함수를 접근할 수 있는 vue 인스턴스가 아니라 window 객체 혹은 지금 사용하고 계신 라이브러리를 지정하고 있을거라 생각합니다.
답변 2