หมวดหมู่: Vue.js

Vue.js: DateLocale.vue ComponentVue.js: DateLocale.vue Component

ลองสร้าง vue component เป็น One-way Binding Component ที่ทำหน้าที่ง่าย ๆ ในการรับ datetime แล้วแสดงออกมาเป็น locale สำหรับใช้ใน laravel ดู
resources/js/Components/DateLocale.vue

<script lang="ts">
interface Window { locales: string[]; datetimeOptions: { year: 'numeric' | '2-digit'; month: 'numeric' | '2-digit'; day: 'numeric' | '2-digit'; hour: 'numeric' | '2-digit'; minute: 'numeric' | '2-digit'; };
} export default { computed: { formattedDate (this: { datetime: string }) { const date: Date = new Date (this.datetime) ; if (!window.datetimeOptions) { console.warn ('window.datetimeOptions is undefined, using default options') ; window.datetimeOptions = { year: 'numeric', month: 'numeric', day: 'numeric', hour: 'numeric', minute: 'numeric' }; } const datetimeOptions = { ...window.datetimeOptions, year: window.datetimeOptions.year as 'numeric' | '2-digit', month: window.datetimeOptions.month as 'numeric' | '2-digit', day: window.datetimeOptions.day as 'numeric' | '2-digit', hour: window.datetimeOptions.hour as 'numeric' | '2-digit', minute: window.datetimeOptions.minute as 'numeric' | '2-digit' }; const userLocales = window.userLocales ? [...window.userLocales] : ['en-US']; return date.toLocaleDateString (userLocales, datetimeOptions) ; } }, name: 'DateLocale', props: { datetime: { type: String, required: true } }
}
</script> <template> <div>{{ formattedDate }}</div>
</template>

บรรทัดที่ 40 คือ ชื่อ
บรรทัดที่ 41 คือ ตัว attribute ที่จะรับ datetime เข้ามา
ประกาศตัวแปรใน resources/js/app.ts

//config variables
const datetimeOptions = { day: 'numeric', hour: 'numeric', minute: 'numeric', month: 'short', year: 'numeric'
};
window.datetimeOptions = datetimeOptions; const locales = (navigator.languages && navigator.languages.length) ? navigator.languages : navigator.language || 'en';
window.locales = locales;

เป็น format รูปแบบการแสดงผล และภาษาที่ user ใช้อยู่

อย่าลืม register component ใน app.ts หรือ vue.ts เช่น
app.component ('date-locale', DateLocale)

ใน view เช่น resources/views/tickets/show.blade.php ใช้โดย
<date-locale datetime="{{ $ticket->created_at }}" />

อ่านเพิ่มเติม