728x90
반응형
데이터 포맷팅
뷰의 Filters 속성을 이용하여 서버에서 받아온 데이터의 형식을 지정할 수 있다.
지역 필터
해당 컴포넌트 내에서만 동작하는 필터를 구현한다.
<!-- src/components/posts/PostListItem.vue -->
<template>
<li>
<div class="post-title">
{{ postItem.title }}
</div>
<div class="post-contents">
{{ postItem.contents }}
</div>
<div class="post-time">
<!-- filters 속성에 정의된 함수 사용 -->
<!-- 파이프라인(|) 하나만 사용 -->
{{ postItem.createdAt | formatDate }}
<i class="icon ion-md-create" @click="routeEditPage"></i>
<i class="icon ion-md-trash" @click="deleteItem"></i>
</div>
</li>
</template>
<script>
import { deletePost } from '@/api/posts';
export default {
props: {
postItem: {
type: Object,
required: true,
},
},
// filters 속성 사용
filters: {
formatDate(value) {
return new Date(value);
},
},
methods: {
async deleteItem() {
if (confirm('You want to delete it?')) {
await deletePost(this.postItem._id);
this.$emit('refresh');
}
// console.log('deleted');
},
routeEditPage() {
const id = this.postItem._id;
this.$router.push(`/post/${id}`);
},
},
};
</script>
전역 필터
전역 변수처럼 여러 컴포넌트에서 사용 가능하도록 필터를 구현한다.
// src/utils/filters.js
// 필터 관련 함수가 존재하는 파일
export function formatDate(value) {
const date = new Date(value);
const year = date.getFullYear();
let month = date.getMonth() + 1;
month = month > 9 ? month : `0${month}`;
const day = date.getDate();
let hours = date.getHours();
hours = hours > 9 ? hours : `0${hours}`;
const minutes = date.getMinutes();
return `${year}-${month}-${day} ${hours}:${minutes}`;
}
// src/main.js
import Vue from 'vue';
import App from './App.vue';
import router from '@/routes/index';
import store from '@/store/index';
// 정의된 필터 함수 import
import { formatDate } from '@/utils/filters';
// Vue의 filter 속성 추가
Vue.filter('formatDate', formatDate);
Vue.config.productionTip = false;
new Vue({
render: h => h(App),
router,
store,
}).$mount('#app');
※ 지역 필터명과 전역 필터명이 동일하면 지역 필터가 동작한다.
728x90
반응형
'Dev > Vue.js' 카테고리의 다른 글
[Vue.js] Today I Learned - 프런트엔드 테스팅 (0) | 2020.10.29 |
---|---|
[Vue.js] Today I Learned - 라우터 심화 (0) | 2020.10.28 |
[Vue.js] Today I Learned - 학습 노트 수정 (0) | 2020.10.28 |
[Vue.js] Today I Learned - 학습 노트 삭제 (0) | 2020.10.28 |
[Vue.js] Today I Learned - API 함수 모듈화 (0) | 2020.10.28 |
댓글