當vm數據更新時,我無法讓我的計算過濾器值更新。在我的情況下,我有一些時間datetime存儲在VM模型中的UTC。然後我有一個過濾器,它顯示那些使用時刻格式化爲時區的時間。然後,如果用戶想要切換時區,但希望切換時區,但切換時區時,濾波值不會相應更新。我錯過了什麼讓他們被動?此外,它甚至沒有使用我的默認值selectedTz: 'America\Los_Angeles'
(您會注意到,儘管此默認設置,它始終將TZ +0(UTC)顯示爲所有時間)。vue2無功濾波器值?
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>
我認爲這種方法,但它似乎「不太高雅」,但我想,如果過濾器將不會工作方式我必須這樣做。謝謝! – Drew
我同意你的意見。在我看來,能夠在這裏使用過濾器也會更冷。不過,我認爲它不會奏效。如果您在tz的過濾器中執行console.log,您會看到它未定義。這太遺憾了,因爲我很想用濾鏡做更多。 – Ozan
它更優雅的過濾器,你可以使用它...但唯一的事情是相關的,那就是格式...不改變時區,這是更有針對性的計算屬性... – cefigueiredo