티스토리 뷰
내용
리스트에서 제외하고 싶은 row를 선택, 페이징 중에서도 제외로 선택된 row 유지
라이브러리
- Vue.js v2.6.6
- axios v0.18.0
- bootstrap-vue v2.0.0
- vuejs-datepicker v1.5.4
html
<div class="row list-row" v-for="(item, index) in members" :key="index">
<div class="col-md-1">
<label class="checkbox">
<input type="checkbox" @click="excludedToggle(item.memberId)">
<i class="fa fa-close" v-show="isExcludedId(item.memberId)"></i>
</label>
</div>
</div>
<!-- bootstrap-vue v2.0.0 -->
<div class="panel-footer">
<div class="pull-right">
<b-pagination
size="md"
v-model="params.page"
v-on:input="search"
:total-rows="params.pages"
:per-page="params.limit"
:limit="11">
</b-pagination>
</div>
</div>
css
.list-row {
padding: 20px;
border-bottom: solid 1px;
border-bottom-color: #bbb;
margin: 0;
}
/*use admin_score_update.jsp*/
label.checkbox {
border: 1px solid #ddd;
border-radius: 5px;
width: 10em;
height: 10em;
text-align: center;
}
label.checkbox input {
opacity: 0;
}
label.checkbox i {
font-size: 6em;
line-height: 0;
top: 50%;
}
js
new Vue({
el: '#app',
data() {
return {
params: {
fromInsertDate: '',
toInsertDate: new Date(),
fromLoginDate: '',
toLoginDate: new Date(),
limit: 10,
page: 1,
pages: 0,
total: 0
},
loading: false,
members: null,
member: null,
excludedIds: []
}
},
mounted: function () {
//this.search(1);
},
components: {
datepicker: vuejsDatepicker
},
methods: {
search: function (page) {
var self = this;
axios
.get('/score/v2/admin_score', {
params: {
fromInsertDate: self.dateFormatter(self.params.fromInsertDate),
toInsertDate: self.dateFormatter(self.params.toInsertDate),
fromLoginDate: self.dateFormatter(self.params.fromLoginDate),
toLoginDate: self.dateFormatter(self.params.toLoginDate),
limit: self.params.limit,
page: page
}
})
.then(function (response) {
self.params = response.data.params;
self.members = response.data.members;
window.scrollTo({
top: 0,
behavior: "smooth"
});
})
.catch(function (error) {
alert(error);
});
},
dateFormatter(date) {
if (!date) return '';
return moment(date).format('YYYY-MM-DD');
},
score: function (member){
if(member == null) return;
self.loading = true;
axios
.post('/score/admin_score', Array.of(member))
.then(function () {
self.loading = false;
})
.catch(function (error) {
if(error.response.data){
console.log(error.response);
alert(error.response.data);
}else{
alert(error);
}
});
},
excludedToggle(memberId) {
if (this.isExcludedId(memberId)) {
// 배열에서 삭제
this.excludedIds = this.excludedIds.filter(value => value !== memberId);
} else {
// 배열에서 추가
this.excludedIds.push(memberId);
}
},
isExcludedId(memberId) {
return this.excludedIds.includes(memberId);
}
}
});
- Total
- Today
- Yesterday
- Web Development Tutorial
- 월간 깃헙 트렌드
- List of Useful Node.js Modules
- Vue Style Guide
- NAVER Tech Talk: FE devtalk
- Do it! Vue.js 입문 저자 블로그
- Eva Icons - 오픈소스 아이콘
- awesome-nodejs
- Node.js Documentation
- Pretty Awesome Lists
- 김정환블로그 - Node.js 코드랩
- TOAST UI - JavaScript UI libra…
- The Vue.js Cheat Sheet
- 1인 크리에이터 콘텐츠 연구소
- The Modern Javascript Tutorial
- Hacker News readers as PWA
- Awesome Vue.js
- 투어버디
- AWS
- OST
- 레인가드
- 자동테스트
- gitlab
- 게임음악
- 추억
- 음악듣기
- tourbuddy
- portainer
- maven
- nodejs
- 자동배포
- pm2
- CI
- CD
- 자돌빌드
- intellij
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |