【发布时间】:2018-07-20 18:10:04
【问题描述】:
当数据更改时,我在更新显示的类时遇到问题。
我有一个服务器数组,它每 10 秒调用一次以获取服务器状态。如果数据发生变化,数据会发生变化,但类不会发生变化
没有改变的部分是根据状态显示字体真棒图标 'fas fa-exclamation-triangle critical' : 'fas fa-check ok'">
文本确实改变了 {{server.status}},只是 if 语句中的 font-awesome 类没有改变。
关于我需要更改什么以使其正确显示有什么想法吗?
<tr v-for="server in servers">
<td>
{{server.name}}
<a v-bind:href="server.url" target="_blank">{{server.url}}</a>
</td>
<td style="min-width: 125px">
<i :class="server.status === 'CRITICAL' ? 'fas fa-exclamation-triangle critical' : 'fas fa-check ok'"></i>
{{server.status}}
</td>
<td>{{server.revision}}</td>
<td>{{server.notify}}</td>
<td>{{server.count}}</td>
</tr>
<script>
import axios from 'axios'
export default {
name: 'ServerMonitor',
data() {
return {
servers: []
}
},
created() {
this.fetchData();
},
mounted: function () {
setInterval(function () {
this.fetchData();
}.bind(this), 10000)
},
methods: {
fetchData() {
axios.get('https://SERVER/serverinfo')
.then((resp) => {
this.servers = resp.data[0].servers;
})
.catch((err) => {
console.log(err);
})
}
}
}
</script>
我也试过没有这样的 :class:
<i v-if="server.status === 'CRITICAL'" class="fas fa-exclamation-triangle critical"></i>
<i v-if="server.status === 'OK'" class="fas fa-check ok"></i>
【问题讨论】:
-
你确定
server.status是否等于'CRITICAL'?你有没有在模板外检查过? -
是的,我有“CRITICAL”和“OK”的混合反应。他们最初工作得很好。问题是当它在 10 秒后再次拨打电话并且它发生变化时。文字发生了变化,但字体很棒的图像没有
-
你应该有一个
:key -
这似乎是与字体真棒有关的问题。我刚刚对其进行了测试,似乎
<i class="something"></i>在页面上呈现为 svg,因此它不依赖于组件数据。我还不确定如何避免这种情况。 -
是的,显然你必须为 Vue 使用不同的 Font Awesome 库,正如他们在文档中推荐的那样:fontawesome.com/how-to-use/js-component-packages
标签: vue.js