vueJS v-if 질문 있습니다.
조회수 405회
v-if 관하여 막히는 부분이 있어 질문 드립니다.
<ol class="fileNames" style="list-style: none; padding-left:0px;">
<li v-for="(fileName, index) in fileNames">
<div v-if="fileUploadedCheck(index)" class="p-3 mb-2 bg-success text-dark">
<span>[[ fileName ]]</span>
</div>
<div v-else class="p-3 mb-2 bg-light text-dark">
<span>[[ fileName ]]</span>
<button type="button" class="close" aria-label="Close">
<span aria-hidden="true" v-on:click="remove_todo(index)">×</span>
</button>
</div>
</li>
</ol>
methods부분
fileUploadCheck : function(index){
return this.fileUploadedCheckList[index];
},
3 번째 줄에 fileuploadcheck함수안의 fileuploadedchecklist index키의 value가 true이면 v-if클래스에 맞는 부트스트랩 스타일을 표현하는 html코드입니다.
맨 처음은 파일이 업로드 되지 않은 상태이기 때문에 v-else가 시행되는건 알겠는데 업로드를 하고 fileuploadedchecklist의 index 밸류가 true로 바뀐 후에도 v-else의 스타일을 유지하고 있는 부분에서 어려움을 느낍니다. 어떻게 해야 실시간으로 바뀐 리스트 값을 확인 하고 스타일이 바뀔까요?
1 답변
-
배열 요소를
object
로 변경하시면 의도한대로 작동합니다.아마 작성자분의 코드에서
fileUploadedCheckList
는 아래와 같은 구조를 가지고있을텐데요,fileUploadedCheckList: [ false, false, false, false, false, ... ]
이를 아래와같은 구조로 변경하신 후
fileUploadedCheckList: [ { isUploaded: false }, { isUploaded: false }, { isUploaded: false }, { isUploaded: false }, { isUploaded: false }, ... ]
이런식으로 렌더링 처리하면 됩니다.
<li v-for="(check, index) in fileUploadedCheckList" :key="index"> <div v-if="check.isUploaded">Hello!</div> </li>
댓글 입력