【发布时间】:2017-02-20 20:27:56
【问题描述】:
当 vm 数据更新时,我无法更新计算的过滤器值。就我而言,我在 UTC 的 VM 模型上存储了一些时刻日期时间。然后我有一个过滤器,它显示那些使用时刻格式化为时区的时间。然后,如果用户需要,我想要切换时区,但是当他们切换时区时,过滤器值不会相应更新。我是否错过了一些让他们反应的东西?此外,它甚至没有使用我的默认值selectedTz: 'America\Los_Angeles'(您会注意到,尽管有此默认设置,但它开始时始终显示为 TZ +0 (UTC))。
var app = new Vue({
el: '#app',
data: {
games: [{start_time: '2017-01-23 21:00:00'}, {start_time: '2017-01-23 22:00:00'}, {start_time: '2017-01-23 23:00:00'}],
selectedTz: 'America/Los_Angeles'
},
methods: {
switchToEast: function () {
this.selectedTz = 'America/New_York'
},
switchToWest: function () {
this.selectedTz = 'America/Los_Angeles'
}
},
filters: {
usertz: function (date) {
var tz = this.selectedTz
var x = new moment.tz(date, 'Etc/UTC')
x.tz(tz)
return x.format('MMM Do @ h:mm a Z')
}
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.11/moment-timezone-with-data.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.1.10/vue.min.js"></script>
<div id="app">
<p class="text-right">All times are in {{ selectedTz }}</p>
<div class="text-right">
<button class="button" @click="switchToEast()">East</button>
<button class="button" @click="switchToWest()">West</button>
</div>
<p v-for="game in games">
{{ game.start_time | usertz }}
</p>
</div>
【问题讨论】:
标签: javascript datetime momentjs vuejs2