Vue+Bootstrap 모음 집(좋아요 누 르 기)기능 논리 및 구현
좋아요 기능 논리
좋아요 기능 설명:데이터 베 이 스 를 연결 하여 로그 인 기능 을 바탕 으로 합 니 다.
좋아요 기능 을 눌 러 목 표를 구체 적 으로 실현 합 니 다.다음 과 같 습 니 다.
1.사용자 가 한 번 클릭 하여 컬 렉 션 에 가입 하고 수량 에 1 을 추가 하 며 컬 렉 션 취 소 를 다시 클릭 하면 수량 이 1 을 감소 합 니 다.
2.다 중 사용자 가 수집 할 때 수량 이 누적 되 는 것 을 좋아 합 니 다.
3.사용자 가 소장 하고 있 으 면 하트(아이콘 활성화)를 표시 하고 소장 하지 않 으 면 그렇지 않 습 니 다.
좋아요 기능 설명:좋아요 기능 은 두 개의 표,좋아요 표 와 데이터 표 의 count 를 사용 합 니 다.
기능 분석:
구체 적 으로 그림 과 같이 이 기능 을 두 부분 으로 나 누 어 각각 실현 할 수 있다.
1.하트 부분 논리:
1.1 데 이 터 를 불 러 올 때 표시:로그 인 자의 id 를 가 져 옵 니 다.id 조 회 를 통 해 좋아요 표를 누 르 고 이 id 에서 좋아 하 는 모든 데 이 터 를 가 져 옵 니 다.전역 변수 배열 에 넣 고 데 이 터 를 불 러 올 때 배열 을 통 해 좋아 하 는 것(좋아요 누 르 기)이 저장 되 어 있 거나 저장 되 어 있 지 않 은 것 을 판단 합 니 다.(설명:두 개의 전역 변수 배열 을 사 용 했 습 니 다.1.1 사용 하 는 배열:대응 하 는 데이터 id 를 저장 합 니 다.1.2 사용 하 는 배열 구조:아래 에 표 시 된 데이터 id,내용 저장 0 또는 1.)
1.2 모음 집(좋아요 누 르 기)과 모음 집(좋아요 누 르 기)상태 사 이 를 전환 하려 면 누 르 십시오.전역 변수 그룹(1.1 주석)을 통 해 현재 모음 집 인지,모음 집 이 없 는 지 판단 합 니 다.모음 집 이 있 으 면 누 르 면 모음 집 이 없 는 것 을 표시 합 니 다.반대로 유사 합 니 다.
2.수치 부분 논리:
2.1 수 치 는 데이터 시트 의 count 로 표시 합 니 다.데이터 시트 의 count 가 비어 있 지 않 으 면 수 치 는 count 로 직접 표시 합 니 다.데이터 시트 에 있 는 count 가 비어 있 으 면 데이터 id 를 통 해 좋아요 표 에서 찾 습 니 다.좋아요 표 에 이 데이터 id 가 없 으 면 count 는 0 을 설정 합 니 다.이 데이터 id 가 있 으 면 개 수 를 계산 하여 count 에 넣 습 니 다.
2.2 클릭 을 실현 합 니 다.만약 에 소장 되 어 있 으 면 값 은 1 을 추가 하고 소장 을 취소 합 니 다.값 은 1 을 감소 합 니 다.1.1.2 의 전역 변수 배열 을 통 해 현재 소장 되 어 있 는 지,소장 되 어 있 지 않 은 지 판단 합 니 다.소장 되 어 있 으 면 클릭 후 count 를 1 을 줄 이 고 좋아요 표 에서 현재 사용 자 를 삭제 합 니 다.저장 하지 않 으 면 count 에 1 을 추가 하고 좋아요 표 에 현재 사용 자 를 추가 합 니 다.
좋아요 기능 구체 적 실현
boottstrap+Vue 를 통 해 이 루어 집 니 다.
단추 의 class 가 glyphicon glyphicon-heart-empty 로 빈 공간 을 표시 하고 glyphicon glyphicon-heart 로 붉 은 마음 을 표시 합 니 다.수 치 는 count 에 의 해 표 시 됩 니 다.
전단 모음 집 단추 코드.
//
<button type="button" style="background:transparent;border-width:0px;outline:none;display:block;margin:0 auto" v-on:click="love(d.cid)" class="btn btn-default btn-lg">
<span :id="d.cid" style="color:red;font-size:20px;"class="glyphicon glyphicon-heart-empty" aria-hidden="true"><p style="float:right;font-size:18px;">{{d.count}}</p></span>
</button>
성명 의 전역 변수.그리고 현재 로그 인 자의 id 를 사용 해 야 합 니 다(쓰 지 않 음).
//
datas: '',
// count
countCid: [],
//
lvs: [],
//
loveDatas: {
type: '',
uid: '',
cid: ''
},
//
updateDatas: {
cid: '',
count: ''
}
불 러 올 때 함 수 를 호출 합 니 다.
// , ・ ( = )
this.listLoveDatas();
// count
this.listData();
// , , , 。this.formData.uid id
this.listLove(this.formData.uid);
우선,listLoveDatas()함 수 를 호출 합 니 다.
listLoveDatas : function(){
var target = this;
//
axios.post('/bac/love/selectAll?ps=10000')
.then(function (response) {
var loves = response.data.result.data;
var length = response.data.result.data.length;
for(var i=0;i<length;i++){
var d = loves[i];
if(target.countCid[d.cid]==null){
// , countCid 1
target.countCid[d.cid]=1;
}else{
// 2、3、4 ,
target.countCid[d.cid] = target.countCid[d.cid] +1;
}
}
})
.catch(function (error) {
console.log(error);
});
}
그 다음 에 listdata()함 수 를 호출 합 니 다.
listData : function(){
var target = this;
// , count countCid
axios.post('/bac/culture/selectAll?ps=10000')
.then(function (response) {
target.datas = response.data.result.data;
var length = response.data.result.data.length;
for(var i=0;i<length;i++){
var d = target.datas[i];
// count , , count 。 , 0
if(d.count==null&&target.countCid[d.cid]){
target.datas[i].count=target.countCid[d.cid];
//
target.updateDatas.cid = d.cid;
target.updateDatas.count = target.countCid[d.cid];
//
axios.post('/bac/culture/updateByPrimaryKeySelective',target.updateDatas)
.then(function (response) {
var success = response.data.success;
if(success==false){
alert(response.data.errorName);
}else{
}
})
.catch(function (error) {
console.log(error);
});
}else if(d.count==null){
target.datas[i].count=0;
//
target.updateDatas.cid = d.cid;
target.updateDatas.count = 0;
//
axios.post('/bac/culture/updateByPrimaryKeySelective',target.updateDatas)
.then(function (response) {
var success = response.data.success;
if(success==false){
alert(response.data.errorName);
}else{
}
})
.catch(function (error) {
console.log(error);
});
}
}
})
.catch(function (error) {
console.log(error);
});
}
마지막 으로 listLove()함 수 를 호출 합 니 다.
listLove : function(uid){
var target = this;
var myChar;
//
axios.post('/bac/love/selectByUid?uid='+uid)
.then(function (response) {
var loveDatas = response.data.result.data;
var length = response.data.result.data.length;
for(var i=0;i<length;i++){
var l = loveDatas[i];
// ,
target.lvs[l.cid]=l.type;
for(var j=0;j<target.datas.length;j++){
var d = target.datas[j];
if(l.cid==d.cid){
// id
myChar = document.getElementById(d.cid);
//
myChar.className = "glyphicon glyphicon-heart";
}
}
}
})
.catch(function (error) {
console.log(error);
});
}
이 함 수 를 호출 하려 면 누 르 십시오.
love : function(cid){
var target = this;
// id
var myChar = document.getElementById(cid);
// , ,this.formData.uid id
if(this.formData.uid==undefined){
alert(" ");
}else{
//
if(this.lvs[cid]==1){
//
myChar.className = "glyphicon glyphicon-heart-empty";
// id id id
axios.post('/bac/love/selectByCidAndUid?cid='+cid+'&uid='+target.formData.uid)
.then(function (response) {
var id = response.data.result.data.id;
// id
axios.post('/bac/love/delete?objectId='+id)
.then(function (response) {
var success = response.data.success;
if(success==false){
alert(response.data.errorName);
}else{
console.log(" ");
}
})
.catch(function (error) {
console.log(error);
});
})
.catch(function (error) {
console.log(error);
});
// id 2, ,
target.lvs[cid]=2;
for(var i=0;i<target.datas.length;i++){
if(target.datas[i].cid==cid){
target.datas[i].count = target.datas[i].count-1;
target.updateDatas.cid = target.datas[i].cid;
target.updateDatas.count = target.datas[i].count;
//
axios.post('/bac/culture/updateByPrimaryKeySelective',target.updateDatas)
.then(function (response) {
var success = response.data.success;
if(success==false){
alert(response.data.errorName);
}else{
}
})
.catch(function (error) {
console.log(error);
});
}
}
}else{
//
myChar.className = "glyphicon glyphicon-heart";
// id、 id、 ,
target.loveDatas.cid = cid;
target.loveDatas.uid = target.formData.uid;
target.loveDatas.type = 1;
//
axios.post('/bac/love/insert',target.loveDatas)
.then(function (response) {
var success = response.data.success;
if(success==false){
alert(response.data.errorName);
}else{
console.log(" ");
}
})
.catch(function (error) {
console.log(error);
});
//
target.lvs[cid]=1;
for(var i=0;i<target.datas.length;i++){
if(target.datas[i].cid==cid){
// 1
target.datas[i].count = target.datas[i].count+1;
// id count
target.updateDatas.cid = target.datas[i].cid;
target.updateDatas.count = target.datas[i].count;
//
axios.post('/bac/culture/updateByPrimaryKeySelective',target.updateDatas)
.then(function (response) {
var success = response.data.success;
if(success==false){
alert(response.data.errorName);
}else{
}
})
.catch(function (error) {
console.log(error);
});
}
}
}
}
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Fastapi websocket 및 vue 3(Composition API)1부: FastAPI virtualenv 만들기(선택 사항) FastAPI 및 필요한 모든 것을 다음과 같이 설치하십시오. 생성main.py 파일 및 실행 - 브라우저에서 이 링크 열기http://127.0.0.1:...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.