-
카테고리
-
세부 분야
풀스택
-
해결 여부
해결됨
activate 토글
20.07.28 05:52 작성 조회수 200
1
좋아요 버튼을 누를때마다 클래스에 active가 들어갔다가 나오는데, 한번 클릭을 하고 active가 들어가있는 상태에서 새로고침을 하면 다시 active가 없는 상태가 됩니다.
새로고침을 하더라도 좋아요가 눌러져있다면 active가 남아있게 하는 방법이 있을까요?
답변을 작성해보세요.
1
카인드패밀리
지식공유자2020.07.31
taejin5314님!! ㅋㅋ
안타깝게도 best 3예제 수업은 이미 수강을 해주셨더라구요 ㅠ ㅠ
저희 수업이 총 3개인데 페이스북 클론 수업과 조금은 중복되는 내용이긴 하지만 인스타그램 클론 수업 추가해 드렸어요 ^ ^ ㅎ
항상 좋은 질문과 의견 감사드립니다 ^ ^ ㅎ
1
카인드패밀리
지식공유자2020.07.29
taejin5314님 우선 공유해주신 워크스페이에 내용을 수정해서 좋아요 버튼이 새로고침을 해도 유지가 될수 있도록 변경해 두었습니다
수정된 부분은 post_list.html파일의 137라인 - 144라인 입니다
좋아요 버튼 부분을 데이터베이스의 내용에 따라서 다르게 표시해 주는 부분이에요
좋아요 모델에 내용이 있는지 확인하고 active가 있는 부분과 없는 부분으로 다르게 표시해 주는 소스라고 보시면 됩니다 :) 간혹 영상에 내용이 빠져 있을때가 있더라구요 요런 제보 너무 감사드려요 인프런가입하셨던 이메일 주소 남겨주시면 저희 강좌중에 장고 best 3 예제 강의 쿠폰 날려드릴게요 ^ ^ ㅎ 감사합니다 taejin5314님 !!
1
카인드패밀리
지식공유자2020.07.29
아이코!! 말씀해 주신 부분 확인해 보니 영상에서 누락된 부분이 있었네요 ㅠ ㅠ 주말 중에 내용 보강해서 디스크립션 박스와 본 질문답변에 공유 드리도록 하겠습니다 감사합니다 taejin5314님 !!
1
taejin5314
질문자2020.07.29
네 강의 정말 잘 듣고 있습니다. 빠른 답변 감사드려요. :)
일단, admin 페이지에 like 값은 잘 들어갑니다. 그러나, 소스코드를 확인해 봐도 like 버튼에 active가 들어가게 하는것은 elem.classList.toggle('active')밖에 없는 것 같습니다. 이게 새로고침을 하게되면 active가 들어가 있더라도 다시 원상태로 돌아가게 되어 admin에 like 값이 있더라도 그것과 상관없이 원상태로 돌아가는 것 같습니다.
예를 들어서
<div class="like-btn" name="{{ post.id }}" data-name="heartbeat"><span class='icon icon--like-line'></span>좋아요</div>
이렇게 클래스에 like-btn만 있다면 좋아요 버튼에 불이 들어와 있지 않는데 버튼을 클릭하게 되면 클래스에 'active'가 토글이 되어 들어가 클래스가 'like-btn active'로 바뀌게 되는 것으로 저는 이해하고 있습니다.
그런데 이 상태에서 새로고침 버튼을 누르게 되면 admin에 like 값이 있음에도 불구하고 다시 클래스 값이 'like-btn'으로 돌아오게 되어서 좋아요 버튼이 눌리지 않은 것처럼 아이콘이 돌아오게 됩니다.
또한 강사님이 post_list.html 파일에 좋아요 버튼 클래스를 'like-btn active'로 해두신 것도 왜 그런지 궁금합니다. 이렇게 하면 좋아요를 누르지 않아도 항상 버튼에 불이 들어와 있는 것이 아닌가 합니다.
제 워크스페이스 공유해 드려요. :)
https://goor.me/uWtTq
1
카인드패밀리
지식공유자2020.07.28
taejin5314님 안녕하세요 :)
좋아요 버튼을 누르게 되면 like 모델에 내용이 쌓이는 구조로 되어있으세요 :) db에 내용이 쌓이게 되면 새로고침을 했을때 db의 내용을 기준으로 active 클래스를 넣어주는 방식이기 때문에 새로고침을 해도 active는 남아있게 됩니다
1. 우선 admin 페이지를 통해서 model에 like버튼을 눌렀을때 값이 잘 들어가는지 확인해 주세요
2. 값이 잘 들어간다면 실제 post리스트를 보여주는 페이지에서 post에 있는 like를 불러오는 부분이 잘 되어있는지 확인해 주세요
위에 2가지 항목을 체크하시면 active가 잘 표시될거에요 ㅎ 혹시 안되시면 원격 컨테이너 공유 부탁드립니다 ^ ^
0
답변 6