【发布时间】:2018-09-12 13:44:34
【问题描述】:
在通过 API 获取所需数据后,我尝试为我的 Vue 组件设置一个选项。创建Vue实例时数据设置正确,但似乎不影响我的条件。
这是sn-p:
import axios from 'axios';
Vue.component("order-now", {
delimiters: ["${", "}"],
props: {
dynamic: {
type: Boolean,
default: false
},
template: null
},
data() {
return {
order: '',
startInterval: false,
}
},
/**
* created
*/
created() {
this.getOrderNow();
this.$options.template = this.template;
},
mounted() {
if(this.startInterval)
this.$options.interval = setInterval(this.getOrderNow(), 10000);
},
/**
* beforeDestroy
*/
beforeDestroy() {
clearInterval(this.$options.interval);
},
methods: {
/**
* getOrderNow
*
* Receive data from api route
* and store it to components data
*/
getOrderNow() {
axios.get('/rest/order-now').then(({data}) => {
this.order = data.orderNow.order;
this.startInterval = data.orderNow.startInterval;
}).catch(e => {
console.error('Could not fetch data for order string.')
});
}
}
});
当created 钩子被调用时,我调用了我的getOrderNow() 方法。这工作正常,我的数据已设置。
如您所见,在mounted() 钩子中,我尝试查看setInterval 是否设置为true 或false,并在有条件的情况下设置一个选项,但setInterval 始终为false。
我认为在 created 钩子中调用我的方法后可能会改变,但事实并非如此。
【问题讨论】:
标签: vue.js vue-component axios