我目前正在使用WordPress REST API和vue-router在小型单页网站上的页面之间进行转换.但是,当我使用REST API对服务器进行AJAX调用时,数据会加载,但只有在页面已经呈现之后才会加载.
该VUE路由器文档提供了深入了解在关于如何前和导航到各航线后加载数据,但我想知道如何加载在初始页面加载的所有路线和页面数据,环游需要加载每个数据路线被激活的时间.
注意,我正在将我的数据加载到acf
属性中,然后使用在.vue
文件组件中访问它this.$parent.acfs
.
main.js路由器代码:
const router = new VueRouter({ routes: [ { path: '/', component: Home }, { path: '/about', component: About }, { path: '/tickets', component: Tickets }, { path: '/sponsors', component: Sponsors }, ], hashbang: false }); exports.router = router; const app = new Vue({ router, data: { acfs: '' }, created() { $.ajax({ url: 'http://localhost/placeholder/wp-json/acf/v2/page/2', type: 'GET', success: function(response) { console.log(response); this.acfs = response.acf; // this.backgroundImage = response.acf.background_image.url }.bind(this) }) } }).$mount('#app')
Home.vue组件代码:
export default { name: 'about', data () { return { acf: this.$parent.acfs, } }, }
有任何想法吗?
我的方法是延迟商店和主Vue的构建,直到我的AJAX调用返回.
store.js
import Vue from 'vue'; import Vuex from 'vuex'; import actions from './actions'; import getters from './getters'; import mutations from './mutations'; Vue.use(Vuex); function builder(data) { return new Vuex.Store({ state: { exams: data, }, actions, getters, mutations, }); } export default builder;
main.js
import Vue from 'vue'; import VueResource from 'vue-resource'; import App from './App'; import router from './router'; import store from './store'; Vue.config.productionTip = false; Vue.use(VueResource); Vue.http.options.root = 'https://miguelmartinez.com/api/'; Vue.http.get('data') .then(response => response.json()) .then((data) => { /* eslint-disable no-new */ new Vue({ el: '#app', router, store: store(data), template: '', components: { App }, }); });
我已经将这种方法与其他框架一起使用,例如Angular和ExtJS.