Vuejs2 在发生任何其他事情之前检索文件
我正在创建一个简单的SPA,它将从API检索数据。页面本身由一个单独的后端进程提供服务,该进程是唯一知道API地址的实体。因此,它还提供了一个端点,其中包括返回API URL的端点:Vuejs2 在发生任何其他事情之前检索文件,vuejs2,Vuejs2,我正在创建一个简单的SPA,它将从API检索数据。页面本身由一个单独的后端进程提供服务,该进程是唯一知道API地址的实体。因此,它还提供了一个端点,其中包括返回API URL的端点: { "api_url_base": "http://api.example.org/v1" } 这是必要的,因为整个系统部署在多个我们无法控制DNS记录的站点上,从前端应用程序派生API URL可能很容易,也可能不容易 现在我需要编写我的Vue应用程序,以便在获取并处理此文件之前不会发生任何事情。为了实现这一点,
{
"api_url_base": "http://api.example.org/v1"
}
这是必要的,因为整个系统部署在多个我们无法控制DNS记录的站点上,从前端应用程序派生API URL可能很容易,也可能不容易
现在我需要编写我的Vue应用程序,以便在获取并处理此文件之前不会发生任何事情。为了实现这一点,我在应用程序的beforeMount
方法中添加了:
this.settings = axios.get('/settings.json');
在安装前的我的组件中
:
var comp = this;
app.__vue__.settings.then((response) => {comp.url = response.data.api_url;});
然而,组件的在安装之前
通常在应用程序之前运行,并且应用程序__当我在安装前到达组件的时,vue\uuuuu.settings
是未定义的
我哪里出错了?是我把东西放错地方了,还是我的方法完全错了?您可以在安装vue应用程序之前获取数据
axios.get('/settings.json').then(response => {
// do something with response
new Vue({
router,
store,
render: h => h(App)
}).$mount('#app')
}
一种方法(如前一个答案中所建议的)是在做任何事情之前再打一个电话。然而,它也带来了许多负面影响
我只想说,它会冻结应用程序的加载,直到收到响应为止
有希望,因为你可以巧妙地使用(f.e.)良好的ol依赖注入将所需数据传递给你的应用程序
这篇文章完整地回答了这个问题:您是否早在创建之前就尝试过这样做?看一看您的第一个关注点是无关的,因为这正是我想要的:在收到文件之前不要做任何事情。如果无法获取文件,应用程序会显示错误消息。