ããã¯ç§ã«é »ç¹ã«èµ·ãããŸãããç§ã¯ãŸã å€ãã®ãããžã§ã¯ãã§äœ¿çšããŠããŠãé·å¹Žã«ããã£ãŠéåžžã«æçšã§ããããšã蚌æãããŠãããæ°ã«å ¥ãã®ã©ã€ãã©ãªã®å°ããªãªã¹ããæã£ãŠããŸããç§ã¯ãããã®ã©ã€ãã©ãªã解決ããåé¡ã解決ããããã«å€ãã®ã¢ãããŒãã詊ã¿ãŸãããç§ã®éžæã¯ãã©ã€ãã©ãªãæäœãã䟿å©ãããã®æ©èœã®å€æ§æ§ãããã䜿çšãããšãã«åŸããããã®ã®èŠæ ãã«åœ±é¿ãããŸããããã®çµæãç§ã¯ããªããšå ±æããããªã¹ããæã£ãŠããŸãã
1.èŠçŽ ã®å€åŽãã¯ãªãã¯ããŠèŠçŽ ãé衚瀺ã«ãã
ãŠãŒã¶ãŒãèŠçŽ ã®å€åŽãã¯ãªãã¯ãããšãã«ã€ãã³ããããªã¬ãŒããå¿ èŠãããå ŽåããããŸããã»ãšãã©ã®å ŽåãããããããŠã³ãªã¹ããŸãã¯ãã€ã¢ãã°ããã¯ã¹ãéããããšãã§ããããã«ãå¿ èŠãªãšãã«ãããè¡ãå¿ èŠããããŸããç§ãéçºããã»ãšãã©ãã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã§äœ¿çšãããã®åäœãå®è£ ããããã®1ã€ã®ããã±ãŒãžããããŸãã
ããã¯vue-clickawayã©ã€ãã©ãªã§ãã
èŠçŽ ã®å€åŽãã¯ãªãã¯ãããšãã«èŠçŽ ãé衚瀺ã«ãã
âvue-clickawayã®äœ¿çš
ç§ã¯éåžžããã®ããã±ãŒãžãã«å«ã
main.jsãŸããããã«ãããã¢ããªã±ãŒã·ã§ã³å
šäœã§äœ¿çšã§ããããã«ãªããŸãã1ããŒãžãŸãã¯2ããŒãžã«ã®ã¿é©çšãããå Žåã¯ãå¿
èŠãªå Žæã«ã®ã¿ã€ã³ããŒãããããšã決å®ããå¯èœæ§ããããŸãã
åå¥ã«ã€ã³ããŒãããå Žåã¯ãã³ã³ããŒãã³ãã§ã¯ãªããã£ã¬ã¯ãã£ããã€ã³ããŒãããããšã«æ³šæããŠãã ãããã€ãŸããæ£ããããšã¯æ¬¡ã®ãšããã§ãã
directives: { onClickaway }
ããããããã¯å¥œãã§ã¯ãããŸããïŒ
components: { onClickaway }
ãã£ã¬ã¯ãã£ããã°ããŒãã«ã«ïŒã§
main.jsïŒäœ¿çšã§ããããã«ããæ¹æ³ã¯æ¬¡ã®ãšããã§ãã
import { directive as onClickaway } from 'vue-clickaway'
Vue.directive('on-clickaway', onClickaway)
ãã³ãã¬ãŒãã§ãã®ãã£ã¬ã¯ãã£ãã䜿çšããæ¹æ³ã¯æ¬¡ã®ãšããã§ãïŒç°¡åã«ããããã«ãã³ãŒãã®ççž®ããŒãžã§ã³ã次ã«ç€ºããŸãïŒã
<button
v-on-clickaway="closeYearSelect"
class="select_option gray"
@click="toggleYearSelect"
>
<span class="txt">{{ selectedYear }}</span>
<span class="arrow blind">Open</span>
</button>
ã¢ã€ãã ã®ãªã¹ããå«ããã¢ã€ãã ãéžæããããã®æ¬æ Œçãªãã£ãŒã«ãããããšæ³åããŠãã ãã
<li>ïŒã³ãŒãã«ã¯è¡šç€ºãããŠããŸããïŒãäžèšã®ãã¿ã³ã¯ãç»é¢ã«ãªã¹ãã衚瀺ããããã«äœ¿çšããããã®èŠçŽ ã®å€åŽãã¯ãªãã¯ãããšããªã¹ããéããã¡ãœãããåŒã³åºããŸããããã«ãããèŠçŽ ã®é
ã«ããéãããã¿ã³ãåžžã«ã¯ãªãã¯ãããããã¯ããã«åªãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãå¯èœã«ãªããŸãããã¿ã³ã®èª¬æã«æ¬¡ã®æ§é ã远å ããããšã§ããã®æ©èœãå©çšã§ããŸãã
v-on-clickaway="closeMethodName"
vue-clickawayèŠçŽ ã衚瀺ããã³é衚瀺ã«ããã¡ãœããã§ã¯ãªããåžžã«äœããéããã¡ãœããã䜿çšããå¿
èŠã
ããããšã«æ³šæããŠãã ãããã€ãŸããã«æ¥ç¶ãããŠããã¡ãœããã¯v-on-clickaway次ã®ããã«ãªããŸãã
closeMethod() {
this.showSomething = false
}
ãããããã®æ¹æ³ã¯æ¬¡ã®ããã«ãã¹ãã§ã¯ãããŸããã
toggleMethod() {
this.showSomething = !this.showSomething
}
ã¡ãœããã®ãããªãã®ã䜿çšããå Žå
toggleMethodãèŠçŽ ã®å€åŽãã¯ãªãã¯ãããšãã¯ãªãã¯ããå Žæã«é¢ä¿ãªããèŠçŽ ãéãããéãããããŸããããªãã¯ãããããããå¿
èŠãšããªãã§ãããããããã£ãŠv-on-clickawayãèŠçŽ ãé衚瀺ã«ããã¡ãœããã§äœ¿çšããã ãã§ãã
2.ãããã¢ããéç¥
ããŸããŸãªããŒã«ã䜿çšããŠããŒã¹ãéç¥ãäœæã§ããŸãããç§ã¯vue-toastificationã©ã€ãã©ãªã®å€§ãã¡ã³ã§ãã
vue-toastificationã§å®è£ ãããéç¥
éçºè ã¯ãããŸããŸãªããŒãºãæºããéç¥ãå®è£ ããããã«äœ¿çšã§ãã倿°ã®ã«ã¹ã¿ãã€ãºãæäŸããŸããéç¥çšã®ã©ã€ãã©ãªã®ã¹ã¿ã€ãªã³ã°ããã³ã¢ãã¡ãŒã·ã§ã³æ©èœã䜿çšãããšãä»ã®ããã±ãŒãžã§äœæãããããåªãããé åçã§ãŠãŒã¶ãŒãã¬ã³ããªãŒãªãœãªã¥ãŒã·ã§ã³ãäœæã§ããŸãã
âvue-toastificationã®äœ¿çš
ã©ã€ãã©ãª
vue-toastificationã¯ããŸããŸãªæ¹æ³ã§äœ¿çšã§ããŸãã詳现ã«ã€ããŠã¯ã圌女ã®ããã¥ã¡ã³ããåç
§ããŠãã ããããã®ãããã¢ããªã±ãŒã·ã§ã³ã®ç¶æ
ã®å€åããµãŒããŒã«é¢é£ããã¢ã¯ã·ã§ã³ã«åºã¥ããŠéç¥ã衚瀺ããå¿
èŠãããå Žåã¯ãã³ã³ããŒãã³ãã¬ãã«ãã°ããŒãã«ã¬ãã«ããŸãã¯Vuexãšçµã¿åãããŠé©çšã§ããŸãã
ãã®ã©ã€ãã©ãªã®ã°ããŒãã«ãªäœ¿çšäŸã次ã«ç€ºããŸãïŒ
main.jsïŒïŒ
import Toast from "vue-toastification"
//
import "vue-toastification/dist/index.css"
Vue.use(Toast, {
transition: "Vue-Toastification__bounce",
maxToasts: 3,
newestOnTop: true,
position: "top-right",
timeout: 2000,
closeOnClick: true,
pauseOnFocusLoss: true,
pauseOnHover: false,
draggable: true,
draggablePercent: 0.7,
showCloseButtonOnHover: false,
hideProgressBar: true,
closeButton: "button",
icon: true,
rtl: false,
})
éç¥ã¹ã¿ã€ã«ã¯ãã³ã³ããŒãã³ãããšã«èšå®ããããšã§åå¥ã«å¶åŸ¡ã§ããŸãããäžèšã®å Žåãã«ã€ã³ããŒãããããšã§ãã¢ããªã±ãŒã·ã§ã³å šäœã§éç¥ã¹ã¿ã€ã«ãå©çšã§ããããã«ããŸãã
main.jsããã®åŸãéç¥èšå®ãè¡ããŸãããããã«ãããéç¥ã䜿çšããå¿
èŠããããã³ã«åãã³ãŒããèšè¿°ããå¿
èŠããªããªããŸãããvue-toastificationã©ã€ãã©ãªã«ã¯ãå®éšã«æé©ãªéã³å ŽããããŸãããã®äžã§ãéç¥ã«å¯Ÿãããã©ã¡ãŒã¿ãŒã®åœ±é¿ã確èªããå¿
èŠãªãã®ãããã«ã³ãŒãã«ã³ããŒã§ããŸããããã¯ãŸãã«äžèšã®äŸã§è¡ã£ãããšã§ãã
ãã®ã©ã€ãã©ãªã®ããã€ãã®äœ¿çšäŸãèããŠã¿ãŸãããã
âãªãã·ã§ã³1ïŒã³ã³ããŒãã³ãïŒãã³ãã¬ãŒãå ïŒã§éç¥ã䜿çšãã
<button @click="showToast">Show toast</button>
ãã¿ã³ãã¯ãªãã¯ããããšãã«åŒã³åºãããã¡ãœããã¯æ¬¡ã®ãšããã§ãã
methods: {
showToast() {
this.$toast.success("I'm a toast!")
}
}
âãªãã·ã§ã³2ïŒVuexã§ãšã©ãŒãçºçãããšãïŒãŸãã¯æäœãæåãããšãïŒã«éç¥ã衚瀺ãã
this._vm.$toast.errorãšã©ãŒãçºçãããšãã«Vuexã§
䜿çšããæ¹æ³ã瀺ããµã³ãã«ã³ãŒããæ¬¡ã«ç€ºããŸãã
async fetchSomeData({ commit }) {
const resource_uri = `/endpoint/url`
try {
await axios.get(resource_uri).then((response) => {
commit(SET_DATA, response.data)
})
} catch (err) {
this._vm.$toast.error('Error message: ' + err.message)
}
}
ã¡ãœããå
.errorã.successãã.infoãŸãã¯ã«å€æŽããã ãã§ãéç¥ã®ã¿ã€ãã倿Žã§ããŸã.warningããŸããå¿
èŠã«å¿ããŠããããå®å
šã«åé€ããŠãããã©ã«ãèšå®ã§éç¥ãåãåãããšãã§ããŸãã
ããŒã¹ãéç¥ã䜿çšãããšãéçºè ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ç¶æ ã®å€åã«åºã¥ããŠããŸãã¯äºæããªããšã©ãŒãçºçãããšãã«ãããã€ãã®æ å ±ã衚瀺ã§ããŸããããã«ãããã¢ããªã±ãŒã·ã§ã³ã®ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžããŸããããŒã¹ãéç¥ã¯ãã¢ãŒãã«ãéãã¢ã©ãŒããŠã£ã³ããŠãããã€ãã³ãã®èŠèŠçãªè¡šç€ºããŠãŒã¶ãŒã«æäŸããŸããå®éããŠã£ã³ããŠãæäœããå ŽåããŠãŒã¶ãŒã¯ãŠã£ã³ããŠãéããããã«ããäžåºŠããŠã¹ãã¯ãªãã¯ããå¿ èŠããããŸãããŠãŒã¶ãŒã¯ãäœããããŸããããªããšããèŠèŠçãªåå³ãäžããããšã§ãç»é¢ãç¡åã«èŠã€ããæ±ºããŠèµ·ãããªãã€ãã³ããåŸ ã€å¿ èŠããªããªãããšãçè§£ããã§ããããããã«ãéç¥ã¯ç¹å®ã®æäœã®æåã確èªããã®ã«åœ¹ç«ã¡ãŸãã
3.ããŒãã«ã®æäœ
ããŒãã«ã¯ãå€ãã®Webã¢ããªã±ãŒã·ã§ã³ã®éåžžã«éèŠãªéšåã§ããäœå質ã®ã¹ãã¬ããã·ãŒãã©ã€ãã©ãªãéžæãããšãå€ãã®åé¡ãçºçããå¯èœæ§ããããŸããç§ã¯å€ãã®åæ§ã®ã©ã€ãã©ãªã詊ããvue-good-tableã«èœã¡çããŸããã

vue-good-tableã®äœ¿çšäŸ
ãã®ã©ã€ãã©ãªã¯ãéçºè ãçŽé¢ããããŒãã«äœæ¥ã¿ã¹ã¯ã®ã»ãšãã©ã解決ã§ãããšç¢ºä¿¡ããŠããŸãããããŠããã®ååãgood-tableãã¯åãªãèšèã§ã¯ãããŸãããããã¯æ¬åœã«åªããã©ã€ãã©ãªã§ãããäºæ³ãããã¯ããã«å€ãã®æ©èœãæäŸããŠãããŸãã
âvue-good-tableã®äœ¿çš
次ã®äŸã§ã¯ãããŒã¿
:rowsãæ¬¡ã®Vuexã²ãã¿ãŒã«ãã€ã³ãããŸãgetOrderHistoryã
<vue-good-table
class="mx-4"
:columns="columns"
:rows="getOrderHistory"
:search-options="{ enabled: true }"
:pagination-options="{
enabled: true,
mode: 'records',
perPage: 25,
position: 'top',
perPageDropdown: [25, 50, 100],
dropdownAllowAll: false,
setCurrentPage: 2,
nextLabel: 'next',
prevLabel: 'prev',
rowsPerPageLabel: 'Rows per page',
ofLabel: 'of',
pageLabel: 'page', // 'pages'
allLabel: 'All'
}"
>
ããŒã«ã«ããŒã¿ïŒ
data()ïŒã®ããŒãã«åã®èª¬æã¯æ¬¡ã®ãšããã§ãã
columns: [
{
label: 'Order Date',
field: 'orderDtime',
type: 'date',
dateInputFormat: 'yyyy-MM-dd HH:mm:ss',
dateOutputFormat: 'yyyy-MM-dd HH:mm:ss',
tdClass: 'force-text-center resizeFont'
},
{
label: 'Order Number',
field: 'orderGoodsCd',
type: 'text',
tdClass: 'resizeFont'
},
{
label: 'Title',
field: 'orderTitle',
type: 'text',
tdClass: 'resizeFont ellipsis'
},
{
label: 'Price',
field: 'saleAmt',
type: 'number',
formatFn: this.toLocale
},
{
label: 'Edit btn',
field: 'deliveryUpdateYn',
type: 'button',
tdClass: 'force-text-center',
sortable: false
},
]
ããã§
labelãåããããç»é¢ã«è¡šç€ºãããfieldããã¯Vuexã²ãã¿ãŒå
ã«çµåãããããŒã¿ã§ãã
äžèšã®äŸã§ã¯ãããŒãã«ãã«ã¹ã¿ãã€ãºããããã«vue-good-tableã®æ©èœã®äžéšã䜿çšããŠããŸããããã¯ãããšãã°ãå ¥åãšåºåã®æ¥ä»åœ¢åŒãèšå®ããŸãïŒããã«ããããµãŒããŒããæ¥ä»ãšæå»ã®å®å šãªèª¬æãååŸãããã®æ å ±ããã䟿å©ãªåœ¢åŒã§ãŠãŒã¶ãŒã«è¡šç€ºã§ããŸãïŒããŸããããã§
formatFnã¯ããšããååã®ç¹å¥ãªæ¹æ³ã䜿çšããŠäŸ¡æ Œããã©ãŒãããããããã«äœ¿çšããŸãtoLocaleãæ¬¡ã«tdClassãããŒã«ã«ã¿ã°ã§èšå®ããã¯ã©ã¹ã«ãã€ã³ãããŠãããŒãã«ã»ã«ã®å€èгãã«ã¹ã¿ãã€ãºããŸãã<style>..ãvue-good-tableããã±ãŒãžã«ã¯ãå®éã«ã¯ç¡éã®ã«ã¹ã¿ãã€ãºãªãã·ã§ã³ãçµã¿èŸŒãŸããŠããŸãããããã®æ©èœã䜿çšãããšãéåžžã«ããŸããŸãªçšéã«é©ããããŒãã«ãäœæã§ããŸãã
âç¬èªã®ãã³ãã¬ãŒããäœæãã
vue-good-tableã©ã€ãã©ãªã¯ãããã°ã©ããŒèªèº«ãäœæãããã³ãã¬ãŒãã§ãæ£åžžã«æ©èœããŸããããã¯ããã¿ã³ããªã¹ãããå€ãéžæããããã®ãã£ãŒã«ãããŸãã¯ãã®ä»ã®ãã®ãããŒãã«ã»ã«ã«ç°¡åã«åã蟌ãããšãã§ããããšãæå³ããŸãããããè¡ãã«ã¯ããã£ã¬ã¯ãã£ãã䜿çšããŠã
v-ifç¹å¥ãªãã®ãé
眮ããå Žæãæå®ããã ãã§ååã§ããããã¯ãããŒãã«ã®åã«ãã¿ã³ã远å ããäŸã§ãã
<template slot="table-row" slot-scope="props">
<span v-if="props.column.field === 'cancelYn' && props.row.cancelYn === 'Y' ">
<BaseButton class="button" @click="showModal">
Cancel Order
</BaseButton>
</span>
</template>
ãã®äŸã§ã¯ãã¢ãŒãã«ãŠã£ã³ããŠãéããã¿ã³ã«ã€ããŠèª¬æããŠããŸãã
cancelYn察å¿ããããŒã¿ãã£ãŒã«ãã®å€ãçããå Žåããã£ãŒã«ãïŒåïŒã«è¡šç€ºããYãŸãã
ç¬èªã®å¥ã®åãããŒãã«ã«è¿œå
v-else-ifããã«ã¯ããã£ã¬ã¯ãã£ãã䜿çšããçµäºã¿ã°v-ifïŒãã®å Žåã¯ã¿ã°<span>ïŒã®åŸã«æ§æã远å ããå¿
èŠããããŸãããã®åŸãæ°ããåã®ããžãã¯ã説æããå¿
èŠããããŸããäžè¬ã«ãvue-good-tableã©ã€ãã©ãªã¯ãWebããŒãžã§ã®ããŒãã«ã®è¡šç€ºã«é¢é£ããããããç¶æ³ã§åœ¹ç«ã€ãšèšããŸãã
4.æ¥ä»ãéžæããããã®ããŒã«
ããã§ã¯ãæ¥ä»ã®éžæãæŽçããããã«èšèšãããã©ã€ãã©ãªã«ã€ããŠèª¬æããŸãã䌌ããããªãã®ããå®ç掻ã®ããŸããŸãªã¢ããªã±ãŒã·ã§ã³ã«èŠãããŸããç§ãããã§è©±ããŠããä»ã®åé¡ã解決ããããã®ã©ã€ãã©ãªãããããã®æ©èœãå®è£ ããã©ã€ãã©ãªããããããããŸãããã®åé¡ã解決ããããã«ã宿çã«vue2-datepickerã©ã€ãã©ãªã«æ»ããŸãã
vue2-datepickerã©ã€ãã©ãªã®äœ¿çšäŸ
ãã®ã©ã€ãã©ãªã§äœæãããæ¥ä»ããã«ãŒã³ã³ãããŒã«ã¯ãç°¡åã«ã¹ã¿ã€ã«èšå®ã§ããŸããæ¥ä»ã®éžæãšæ¥ä»ã®ç¯å²ã«é¢é£ãã倧éã®ã«ã¹ã¿ãã€ãºããµããŒãããŸããã©ã€ãã©ãªã䜿çšãããšããã¡ããšãã䟿å©ãªãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹èŠçŽ ãäœæã§ããŸããããŒã«ãªãŒãŒã·ã§ã³ããŒã«ããµããŒãããŠããŸãã
ããã±ãŒãžã¯vue2-datepickerãšåŒã°ããŸãããVue 3ããŒã¹ã®ã¢ããªã±ãŒã·ã§ã³ã§åé¡ãªã䜿çšã§ããããšã«æ³šæããŠãã ããïŒãã®æçš¿ã§èª¬æããä»ã®ã©ã€ãã©ãªã«ã€ããŠãåãããšãèšããŸãïŒã
âvue2-datepickerã®äœ¿çš
ã©ã€ãã©ãªã¯ãã³ã³ããŒãã³ãã«ã€ã³ããŒãããããšãããã³ãã¬ãŒãã«å«ããããšãã§ããŸãã
ãããã³ã³ããŒãã³ãã«ã€ã³ããŒãããäŸã次ã«ç€ºããŸãã
import DatePicker from 'vue2-datepicker';
//
import 'vue2-datepicker/index.css';
ãã³ãã¬ãŒãã§äœ¿çšããæ¹æ³ã¯æ¬¡ã®ãšããã§ãã
<date-picker
v-model="dateRange"
value-type="format"
range
@clear="resetList"
@input="searchDate"
></date-picker>
ããã§ã¯
rangeããŠãŒã¶ãŒãæ¥ä»ç¯å²ãéžæã§ãããªãã·ã§ã³ã䜿çšããŠããŸããããã§ã¯ããã£ã¬ã¯ãã£ãã䜿çšv-modelããŠããŠãŒã¶ãŒãå
¥åããããŒã¿ãå€ã«æ¥ç¶ããŸãdateRangeãæ¬¡ã«dateRangeãããšãã°ãvue-good-tableã䜿çšããŠãããŒãã«å
ã®ããŒã¿ã®åºåãã«ã¹ã¿ãã€ãºã§ããŸããããã§ãã€ãã³ããªãã·ã§ã³ã䜿çšããŸã-@clearãããŠ@inputããããã䜿çšããŠã¡ãœãããåŒã³åºããŸããã¡ãœããã®1ã€ã¯ããŒãã«ããã³ããïŒresetListïŒã2ã€ç®ã¯ãµãŒããŒã«ãªã¯ãšã¹ããéä¿¡ããŸãïŒsearchDateïŒãvue2-datepickerã©ã€ãã©ãªã¯ãããã§èª¬æãããããã¯ããã«å€ãã®ãªãã·ã§ã³ãšã€ãã³ããæäŸããŸããããããç§ãããã§è©±ããããšã¯ãç§ãæãé »ç¹ã«äœ¿çšããŸãã
5.è©äŸ¡
è©äŸ¡ã·ã¹ãã ã¯ãããšãã°ãAmazonãRottenTomatoesãªã©ã®ãµã€ãã«ãããŸããããããããã¹ãŠã®ãããžã§ã¯ãã§ãã®ãããªã·ã¹ãã ã䜿çšããããã§ã¯ãããŸããããç§ã¯ããããå¿ èŠãªãã¹ãŠã®ãµã€ãã§ãvue-star-ratingã©ã€ãã©ãªã䜿çšããŠãã®æ©èœãå®è£ ããŸãã
vue-star-ratingã©ã€ãã©ãªã®äœ¿çšäŸ
ãã®ãããªãã®ã¯èªåã§äœæããã®ãéåžžã«ç°¡åã«æãããããããŸããããããã詳现ãæãäžãããšããã®ãããªã³ã³ãããŒã«ã®èšèšã¯ãäºæ³ãããã¯ããã«ããã«é£ãããªãå¯èœæ§ãããããšãããããŸãããã®ã©ã€ãã©ãªã䜿çšãããšãç¬èªã®SVGã€ã¡ãŒãžã䜿çšããŠãã¹ã³ã¢ãªã³ã°ã«äœ¿çšããã圢ç¶ã®åœ¢ç¶ãã«ã¹ã¿ãã€ãºã§ããŸããèŠçŽ ã®ãµã€ãºãèŠçŽ éã®è·é¢ãèŠçŽ ã®è²ã調æŽã§ããŸãã
vue-star-ratingã®ã³ã³ãããŒã«ã䜿çšããŠãŠãŒã¶ãŒãäœãã«äžããè©äŸ¡ã¯ã
v-modelããã䜿çšããäºå®ã®å Žæã«ç°¡åã«æž¡ãããšãã§ããŸããèŠç©ããã¯ãåäžã®ãã©ã¡ãŒã¿ãŒã䜿çšããŠå¯å€ãŸãã¯äžå€ã«ããããšãã§ããŸãã
ãŸãããã®ã©ã€ãã©ãªã䜿çšãããšãã«ããã«å€ãã®æ©èœãå¿ èŠãªå Žåã¯ãåãäœæè ã«ããvue-rate-itããã±ãŒãžã確èªããŠãã ããã
âvue-star-ratingã®äœ¿çš
ãã³ãã¬ãŒãã§ãã®ã©ã€ãã©ãªã䜿çšããæ¹æ³ã¯æ¬¡ã®ãšããã§ãïŒãªãã·ã§ã³ä»ãïŒã
<star-rating
class="star-rating"
:rating="newReivew.score"
active-color="#FBE116"
:star-size="starSize"
:increment="increment"
:show-rating="showRating"
@rating-selected="setRating"
/>
ã³ã³ããŒãã³ãã«ã€ã³ããŒãããæ¹æ³ã¯æ¬¡ã®ãšããã§ãã
import StarRating from 'vue-star-rating'
export default {
components: {
StarRating
},
}
çµæ
Vueã®5ã€ã®ã©ã€ãã©ãªã«ã€ããŠèª¬æããŸãããããã§ããããžã§ã¯ããéçºãããšãã«åœ¹ç«ã€ãã®ãèŠã€ããŠããã ããã°å¹žãã§ãã
ã©ã®Vue.jsã©ã€ãã©ãªãæããã䜿çšããŸããïŒ
