vue v-cloak가 작동하지 않습니다.

조회수 438회

vue코드를 작성하는데 v-if v-for부분이 새로고침 할때마다 소스코드가 보여서

v-cloak코드를 입력해 두었는데도 계속 새로고침때마다 소스코드가 보입니다.

이 코드들 중 v-cloak가 작동하지 않을만한 코드가 있는건가요?

<div id="app" class="container" v-cloak>
        <div class="panel panel-default">
            <div class="panel-heading"><strong>Make GIF</strong> </div>
            <div class="panel-body">
                <h3>움짤 생성기</h3>
                <div class="container empty" :class="{ ' hovered' : isHoverTrue }" @dragleave.prevent="onDragLeave"
                    @dragover.prevent="onDragOver" @drop.prevent="onDrop">
                    <div v-if="isHoverTrue == false">
                        <h3 class="divCenter">이곳에 파일을 끌어다 놓으세요</h3>
                    </div>
                </div>
                <div class="uploadFile" v-cloak>
                    <label for="image_uploads" class="btn btn-secondary btn-lg btn-block">직접 파일 찾기</label>
                    <input class="file" type="file" id="image_uploads" name="image_uploads" multiple
                        @change="add_files">
                    <!-- accept=".flv, .avi, .wmv, .mov, .mp4" -->
                </div>
                <input class="form-control" type="text" v-model="inputURL" placeholder="동영상 URL입력">
                <br>
                <ol class="fileNames" style="list-style: none; padding-left:0px;">
                    <li v-for="(namecheck, index) in fileNamesWithCheck">
                        <div v-if="namecheck.fileName != 'default'" class="p-3 mb-2 bg-light text-dark">
                            <span>[[ namecheck.fileName ]]</span>
                            <button type="button" class="close" aria-label="Close">
                                <span v-if="namecheck.fileUploaded">upload완료</span>
                                <span v-else aria-hidden="true" v-on:click="remove_todo(index)">&times;</span>
                            </button>
                        </div>
                    </li>
                    <!-- v-if="namecheck.fileName != 'default'" -->
                    <li v-for="(size, index) in fileSizeCheck">
                        <p v-if="size.fileSize">총 파일 크기: [[ returnedFileSize(fileSize) ]]</p>
                    </li>
                </ol>
                <!-- <p>총 파일 크기: [[ returnedFileSize(fileSize) ]]</p> -->
                <div v-for="(converted, index) in forConvertButton" class="buttons">
                    <button v-if="converted.checkConverted" type="submit" class="btn btn-success">움짤 만들기</button>
                    <button v-else type="submit" class="btn btn-success" v-on:click="uploadFiles()">업로드</button>
                    <!-- <button v-on:click="remove_all()">모두 삭제</button> -->
                </div>
            </div>
        </div>
    </div>

(제일 위 id가 app인 div에 v-cloak을 설정해 두었습니다)

.empty {
    height: 300px;
    border: 3px salmon solid;
    background-color: #eee;
}

.hovered {
    background: #f4f4f4;
    border-style: dashed;
}
.divCenter {
    line-height: 300px;
    text-align: center;
}

[v-cloak] {display: none;}

(v-cloak 설정을 해둔 html과 연결된 css파일 입니다.)

이미지

v-cloak설정 후에도 이런식으로 소스코드가 보입니다.

  • 설마 싶지만 혹시 vue 라이브러리를 body 태그 쪽에서 불러오고 있다면 그걸 head 태그 쪽으로 옮겨보시겠어요? 엽토군 2020.3.15 08:52
  • 뷰, axios, 부트스트랩cdn을 모두 head태그 쪽으로 옮기니깐 정말 가끔 아니면 나타나진 않습니다!! head로 옮겨도 증상이 나타나는건 부트스트랩 cdn때문일수도 있나요? poffsle 2020.3.15 13:30
  • 그럴수 있을거 같네요. 이게 라이브러리를 언제 로딩할 것이냐의 문제일 거거든요. head 안에서 부르는 script 태그들에 defer 속성을 줘보세요. https://blog.asamaru.net/2017/05/04/script-async-defer/ || https://hashcode.co.kr/questions/850/ 엽토군 2020.3.15 18:13

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)