I’m using vue to dynamically show elements (called boxes) on the page, but I need to display an element based on if it’s start date is before or after today+1 week.
So if the box.start_date
is before one week from today, then show it, else hide it.
I’m not sure how I can do this in vue
ie.
JavaScript
x
2
1
<div class="box" v-if="box.start_date < *** 1 week from now date here?? ***"> </div>
2
I tried using moment.js but it give me an error saying moment is not defined in vue
With laravel and blade I would just do this like this…
JavaScript
1
2
1
@if($box->start_date > now()->addWeek(1))
2
How can I make this work with vue?
Advertisement
Answer
Try to use a computed property to return that value :
JavaScript
1
6
1
computed:{
2
beforeWeek(){
3
return (new Date().getTime())-(new Date(this.box.start_date).getTime())> (7*24*60*60*1000)
4
}
5
}
6
template :
JavaScript
1
2
1
<div class="box" v-if="beforeWeek"> </div>
2
or you could a method :
JavaScript
1
6
1
methods:{
2
beforeWeek(start_date){
3
return (new Date().getTime())-(new Date(start_date).getTime())> (7*24*60*60*1000)
4
}
5
}
6
template :
JavaScript
1
2
1
<div class="box" v-if="beforeWeek(box.start_date)"> . </div>
2
**Note : **
72460601000 is the number of milliseconds in one week